anchor.diff:      });
     }
   
  -  void start() {
  -    _init().then((_) {
  -      _lastTimeP = window.performance.now();
  -
  -      var physicsSystem = world.systems.firstWhere((system) => system.group == 1, orElse: () => null);
  -      if (null != physicsSystem) {
  -        physicsLoop();
  -      }
  -      window.requestAnimationFrame(_firstUpdate);
  -    });
  +  Future<GameBase> start() {
  +    return _init().then((_) {
  +      _startGameLoops();
  +      return this;
  +    });
  +  }
  +
  +  void _startGameLoops() {
  +    _lastTimeP = window.performance.now();
  +
  +    var physicsSystem = world.systems.firstWhere((system) => system.group == 1, orElse: () => null);
  +    if (null != physicsSystem) {
  +      physicsLoop();
  +    }
  +    window.requestAnimationFrame(_firstUpdate);
     }
   
     void stop() {
       _stop = true;
  +  }
  +
  +  void pause() {
  +    if (!_stop) {
  +      _pause = true;
  +    }
  +  }
  +
  +  void resume() {
  +    if (!_stop) {
  +      _pause = false;
  +      _startGameLoops();
  +    }
     }
   
     void physicsLoop() {
  
positive.code:     world.delta = delta;
      _lastTime = time;
      world.process();
      if (!_stop) {
        window.requestAnimationFrame((time) => update(time: time / 1000.0));
      }
    }
  
negative.code:     _lastTimeP = time;
      world.process(1);
  
      if (!_stop && !_pause) {
        new Future.delayed(new Duration(milliseconds: 5), physicsLoop);
      }
    }
  