anchor.diff:          }
         }
       },
  +    //moves the mover towards the destination
  +    //if the mover is at the destination, finds another mover to go to
  +    //  this code probably needs to be improved, the new destination should be handled at the mover level
  +    //also handles rotating the mover (Assuming you have commented the rotation back in)
       update_positions: function()  {
  -      for(var i = 0; i < this.num_paths; i++)  {
  +      for(var i = 0; i < this.movers.length; i++)  {
           var mover = this.movers[i];
           var vector = mover.move_to_destination();
   
           if (vector.length < 5) {
             //set the destination
  -          match = this.find_mover_with_same_color(mover, this.num_paths);
  +          match = this.find_mover_with_same_color(mover, this.movers.length);
             mover.destination = new Point(match.path.bounds.x,  match.path.bounds.y);
             //hack to move to random point if we go out of bounds
             if(mover.destination.x < 0 || mover.destination.y < 0)  {
  
positive.code:         }
        }
      },
      handle_mouse_down: function(event)  {
        //this should probably be moved to the initializer
        var hit_options = {
  
negative.code:       this.path.add(end_half_point);
        this.path.add(end_point);
      },
      //update either the start or end point to be the new position
      //calculate the new position of the two center points
      update_position: function(caller, new_pos)  {
        if(caller == this.start)  {
          this.path.segments[0].point.x = new_pos.x;
  