protected void internalSingleStepSimulation(float timeStep) {
    // apply gravity, predict motion
    predictUnconstraintMotion(timeStep);

    DispatcherInfo dispatchInfo = getDispatchInfo();

    dispatchInfo.timeStep = timeStep;
    dispatchInfo.stepCount = 0;
    dispatchInfo.debugDraw = getDebugDrawer();

    // perform collision detection
    performDiscreteCollisionDetection();

    calculateSimulationIslands();

    getSolverInfo().timeStep = timeStep;

    // solve contact and other joint constraints
    solveConstraints(getSolverInfo());

    // CallbackTriggers();

    // integrate transforms
    integrateTransforms(timeStep);

    // update vehicle simulation
    updateActions(timeStep);

    // update vehicle simulation
    updateVehicles(timeStep);

    updateActivationState(timeStep);

    if (internalTickCallback != null) {
      internalTickCallback.internalTick(this, timeStep);
    }
  }