anchor.diff:        }
       }, REPOSITION_DURATION);
     }
  -  
  +
     void _idle() {
       _repositionDroid(DROID_IDLE_X, DROID_IDLE_Y);
       window.console.log("I'm bored");
     }
  -  
  +
     void _startAnimationLoop() {
  -    _animationStartTime = new Date.now().value;    
  -    window.webkitRequestAnimationFrame(_animationLoop);
  +    _animationStartTime = new Date.now().millisecondsSinceEpoch;
  +    window.requestAnimationFrame(_animationLoop);
     }
  -  
  +
     void _animationLoop(int timestamp) {
       _animationProgress = timestamp - _animationStartTime;
  -    for (Callback callback in _animationCallbacks.getValues()) {
  +    for (Callback callback in _animationCallbacks.values) {
         callback();
       }
  -    window.webkitRequestAnimationFrame(_animationLoop);
  +    window.requestAnimationFrame(_animationLoop);
     }
   }
   
  
positive.code:   final int DROID_IDLE_Y = 395;
    final double HALF = 0.5;
    final double SECS_PER_MS = 1 / 1000.0;
    
    Queue _actionQueue;
    bool _waitingForTimer = false;
    ImageElement _droid;
    Map<String, Callback> _animationCallbacks;
    int _animationStartTime;
    int _animationProgress;
    
    Lawnville() {
      _actionQueue = new Queue();
      _animationCallbacks = new HashMap<String, Callback>();
  
negative.code:       _executeActionQueue();
      }
    }
  
    void _executeActionQueue() {
      window.console.log("_executeActionQueue");
      window.console.log("_actionQueue.length: ${_actionQueue.length}");
      if (_actionQueue.isEmpty) {
        window.console.log("Nothing to do");
        window.console.log("_waitingForTimer = false");
        _waitingForTimer = false;
        _idle();
      } else {
        window.console.log("There is work to do");
        var action = _actionQueue.removeFirst();
        _doAction(action);
  