anchor.diff:        vector = this.destination - this.path.position;
         this.path.position += vector / 30;
         this.text.position += vector / 30;
  +      for(var i = 0; i < this.connections.length; i++)  {
  +        this.connections[i].update_position(this, this.path.position);
  +      }
         return vector;
  +    },
  +    add_connection: function(path)  {
  +      this.connections.push(path);
  +      return this.path.position;
       },
     });
   
  -  mover_group = new RandomMoverGroup(60);
  +  mover_group = new RandomMoverGroup(40);
   
     function onFrame(event) {
       mover_group.update_positions();
  
positive.code:       for(var i = 0; i < this.num_paths; i++)  {
          var color = this.fill_colors[i % this.num_fill_colors]
          this.movers.push(new Mover(color, i));
        }
      },
      update_positions: function()  {
  
negative.code:     },
    });
  
    var Connection = Base.extend({
      initialize: function(start, end, color)  {
        this.path = new Path();
        this.path.strokeColor = color;
        this.start = start
        this.end = end
  
        this.path.add(start.add_connection(this));
        this.path.add(end.add_connection(this));
      },
      update_position: function(caller, new_pos)  {
        if(caller == this.start)  {
          this.path.segments[0].point.x = new_pos.x;
          this.path.segments[0].point.y = new_pos.y;
        } else  {
          this.path.segments[1].point.x = new_pos.x;
          this.path.segments[1].point.y = new_pos.y;
        }
      },
    });
    
    var Mover = Base.extend({
      initialize: function(color, num)  {
        //path = new Path.Circle(view.center + i, i);
  