anchor.diff:    window.animationFrame.then(loop);
   }
   
  +/// Recursive loop for animation
   void loop(num delta) {
  -  if (delta - start > interval) {
  -    fish.doAnimation();
  -    school.forEach((fish) => fish.doAnimation());
  -    start = delta;
  +  if (delta - lastFrame > interval) {
  +    fish.animate();
  +    school.forEach((fish) => fish.animate());
  +    lastFrame = delta;
     }
     window.animationFrame.then(loop);
   }
   
  +/// Spawn a new fish and add it to the school
   void spawnFish() {
     DivElement fish = new DivElement()..classes.add('abs');
     ImageElement fishImg = new ImageElement()..src = "media/fish_right.png";
     fish.children.add(fishImg);
     document.body.children.add(fish);
  -  Fish egg = new Fish(fish, fishImg, rand.nextDouble() + 1);
  +  Fish egg = new Fish(fish, fishImg, rand.nextDouble() + 1,
  +      60 * rand.nextDouble() + 20, 40 * rand.nextDouble() + 10);
     egg.setBait(mouseX, mouseY);
     school.add(egg);
   }
  
positive.code: 
      int tolX = 5;
      int tolY = 5;
      int amp = 10;
  
      if (baitX > fishX) {
        setImg(Dir.Right);
  
negative.code:     }
    }
  
    /// Perform one step of animation
    void animate() {
      width = fishImg.client.width;
      height = fishImg.client.height;
  
      int diffX = max(fishX, baitX) - min(fishX, baitX);
  