       mixins: [Router.Navigation]
       render: -> fn.call(@); null
 
+  app = {imports, module_names}
+
   routesComponent = Routes null,
-    Route {handler: AppComponent, bodyWrapper},
+    Route {handler: AppComponent, bodyWrapper, app},
       Route path: '/', name: 'default', handler: null_route ->
         queryKeys = Object.keys(@props.query)
         if queryKeys.length == 1 and @props.query[queryKeys[0]].length == 0

require './input'
require './opentsdb'

module_names = ['http', 'dsl', 'graphing', 'settings', 'input', 'notebook']

imports = [
  'builtins.*'
  'server.*'
  'github.*'
  'graphing.*',
  'compat.*',
  'opentsdb.tsd'
]

imports.push (Settings.get('app', 'imports') or [])...
module_names.push _.map(imports, (i) -> i.split('.')[0])...
module_names.push (Settings.get('app', 'module_names') or [])...

Settings.default 'app', 'intro_command', "help 'introduction'"

appComponent = null

    Settings.user_settings.set JSON.parse(localStorage.getItem 'lead_user_settings') ? {}
  catch e
    console.error 'failed loading user settings', e

  module_names = ['http', 'dsl', 'graphing', 'settings', 'input', 'notebook']

  imports = [
    'builtins.*'
    'server.*'
    'github.*'
    'graphing.*',
    'compat.*',
    'opentsdb.tsd'
  ]

  imports.push (Settings.get('app', 'imports') or [])...
  module_names.push _.map(imports, (i) -> i.split('.')[0])...
  module_names.push (Settings.get('app', 'module_names') or [])...

  window.addEventListener 'storage', (e) =>
    if e.key == 'lead_user_settings'
