docs: function( bodies, dt ){
  
              // half the timestep
              var dtdt = dt * dt
                  ,drag = 1 - this.options.drag
                  ,body = null
                  ,state
                  ,prevDt = this.prevDt || dt
                  ,dtMul = (dtdt + dt * prevDt) * 0.5
                  ;
  
              for ( var i = 0, l = bodies.length; i < l; ++i ){
  
                  body = bodies[ i ];
                  state = body.state;
  
                  // only integrate if the body isn't static
                  if ( body.treatment !== 'static' && !body.sleep( dt ) ){
  
                      // Inspired from https://github.com/soulwire/Coffee-Physics
                      // @licence MIT
                      //
                      // v = x - ox
                      // x = x + (v + a * dt * dt)
  
                      // use the velocity in vel if the velocity has been changed manually
                      if (state.vel.equals( state.old.vel ) && body.started()){
  
                          // Get velocity by subtracting old position from curr position
                          state.vel.clone( state.pos ).vsub( state.old.pos );
  
                      } else {
  
                          state.old.pos.clone( state.pos ).vsub( state.vel );
                          // so we need to scale the value by dt so it
                          // complies with other integration methods
                          state.vel.mult( dt );
                      }
  
                      // Apply "air resistance".
                      if ( drag ){
  
                          state.vel.mult( drag );
                      }
  
                      // Apply acceleration
                      // v += a * dt * dt
                      state.vel.vadd( state.acc.mult( dtMul ) );
  
                      // restore velocity
                      state.vel.mult( 1/dt );
  
                      // store calculated velocity
                      state.old.vel.clone( state.vel );
  
                      // Reset accel
                      state.acc.zero();
  
                      //
                      // Angular components
                      //
  
                      if (state.angular.vel === state.old.angular.vel && body.started()){
  
                          state.angular.vel = (state.angular.pos - state.old.angular.pos);
  
                      } else {
  
                          state.old.angular.pos = state.angular.pos - state.angular.vel;
                          state.angular.vel *= dt;
                      }
  
                      state.angular.vel += state.angular.acc * dtMul;
                      state.angular.vel /= dt;
                      state.old.angular.vel = state.angular.vel;
                      state.angular.acc = 0;
  
                      body.started( true );
  
                  } else {
                      // set the velocity and acceleration to zero!
                      state.vel.zero();
                      state.acc.zero();
                      state.angular.vel = 0;
                      state.angular.acc = 0;
                  }
              }
          }