anchor.diff:        });
         ff.fastForward(persistence.savedEvents.last.offset);
       });
  +
       ff.switchToParentZone();
     } else {
       var startTime = clock.now();
       var cpt = () => clock.now().difference(startTime);
  -    run = new Run(cpt);
  +
  +    run = new Run._(cpt);
       scriptModules = new ScriptModules(script.modules, run, persistence);
  +
       script.block(run, scriptModules.modules);
     }
   
  
positive.code: /// to that module which a UI can use to interact with the current [Run].
  typedef dynamic CreateUi(Map interfaces);
  
  class Run {
    StreamController<dynamic> _ctrl =
        new StreamController<dynamic>.broadcast(sync: true);
    GetCurrentPlayTime _currentPlayTime;
  
    Run(this._currentPlayTime) {
      every((e) => true).listen((e) => print("${currentPlayTime()}: ${e}"));
    }
  
    Future emit(dynamic event,
  
negative.code:       if (moduleDef is HasInterface) {
          var handler = moduleDef.createInterfaceHandler(module);
          var interface = moduleDef.createInterface(module, (action, args) {
            // Could put logic here to check if this module is allowed to be
            // interacted with from user interface currently.
            var event = new InterfaceEvent(
                moduleDef.runtimeType, action, args, run.currentPlayTime());
            persistence.saveEvent(event);
  