anchor.diff:      localPrefs = preferences.localStore;
       syncPrefs = preferences.syncStore;
   
  -    actionManager = new ActionManager();
  -
  +    initAnalytics();
  +
  +    addParticipant(new _SparkSetupParticipant(this));
  +
  +    // TODO: this event is not being fired. A bug with chrome apps / Dartium?
  +    chrome.app.window.onClosed.listen((_) {
  +      close();
  +    });
  +
  +    initWorkspace();
  +    initEditor();
  +    initEditorManager();
  +    initEditorArea();
  +    initEditorThemes();
  +    initFilesController();
  +
  +    initLookAndFeel();
  +
  +    createActions();
  +    initToolbar();
  +    initSplitView();
  +  }
  +
  +  String get appName => i18n('app_name');
  +
  +  String get appVersion => chrome.runtime.getManifest()['version'];
  +
  +  PlatformInfo get platformInfo => _platformInfo;
  +
  +  //
  +  // Parts of ctor:
  +  //
  +
  +  void initAnalytics() {
       analytics.getService('Spark').then((service) {
         // Init the analytics tracker and send a page view for the main page.
         tracker = service.getTracker(_ANALYTICS_ID);
         tracker.sendAppView('main');
         _startTrackingExceptions();
       });
  -
  -    addParticipant(new _SparkSetupParticipant(this));
  -
  -    // TODO: this event is not being fired. A bug with chrome apps / Dartium?
  -    chrome.app.window.onClosed.listen((_) {
  -      close();
  -    });
  -
  +  }
  +
  +  void initWorkspace() {
       workspace = new ws.Workspace(localPrefs);
  +  }
  +
  +  void initEditor() {
       editor = new AceEditor(new DivElement());
  -
  +  }
  +
  +  void initEditorManager() {
       editorManager = new EditorManager(workspace, editor, localPrefs);
       editorManager.loaded.then((_) {
         List<ws.Resource> files = editorManager.files.toList();
  
positive.code:         editorArea.selectFile(resource, switchesTab: true);
        });
      });
  
      editorArea = new EditorArea(document.getElementById('editorArea'),
                                  editorManager,
                                  allowsLabelBar: true);
      editorArea.onSelected.listen((EditorTab tab) {
        _filesController.selectFile(tab.file);
        localPrefs.setValue('lastFileSelection', tab.file.path);
      });
      _filesController = new FilesController(workspace, this);
  
      setupSplitView();
      setupFileActions();
      setupEditorThemes();
  
      // Init the bootjack library (a wrapper around bootstrap).
      bootjack.Bootjack.useDefault();
  
      createActions();
      buildMenu();
  
      actionManager.registerKeyListener();
    }
  
    String get appName => i18n('app_name');
  
    String get appVersion => chrome.runtime.getManifest()['version'];
  
    PlatformInfo get platformInfo => _platformInfo;
  
    void setupSplitView() {
      _splitView = new SplitView(querySelector('#splitview'));
      _splitView.onResized.listen((_) {
        editor.resize();
  
negative.code:     }
    }
  
    void showStatus(String text, {bool error: false}) {
      Element element = querySelector("#status");
      element.text = text;
  