anchor.diff:          lastUpdate = delta;
           window.onKeyDown.listen(onKeyDown);
         }
  -      context.clearRect(0,0,800,550);
         drawMap(map,colors);
       }
       else if(gameState == MENU) {
         querySelector('#canvas').onClick.listen((e) { 
  -        gameState = PLAY;
  -        timer = new Stopwatch()..start();
  +        start();
         });
         drawMenu();
       }
       else if(gameState == OVER) {
         drawGameOver();
  +      querySelector('#canvas').onClick.listen((e) { 
  +        start();
  +      });
       }
       window.animationFrame.then(update);
     }
  
positive.code:     
      colors = [];
      colors.length = 16;
      
      makeMap(map);
      makeColors(colors);
    }
    
    void update(num delta) {
      if(gameState == PLAY) {
        timeRemaining = 60 - (timer.elapsedMilliseconds * .001);
        if(timeRemaining <= 0) {
  
negative.code:   }
    
    void drawGameOver() {
      context..fillStyle = randomColor();
      context..font = "70px sans-serif";
      context..fillText("GAME OVER", 180, 200);
      context..font = "30px sans-serif";
      context..fillStyle = 'white';
      context..fillText('Click to restart', 300, 300);
      context..font = '10px sans-serif';
    }
  
    void onKeyDown(KeyboardEvent args) {
      move(args.keyCode);
      patternCheck(args.keyCode);
    }
    
    void start() {
      gameState = PLAY;
      makeMap(map);
      makeColors(colors);
      timer = new Stopwatch()..start();
      symbolsRem = "2 3 4 5 6 7 8 9 A B C D E F";
      lastUpdate = 0.0;
    }
    
    void move(int key) {
  