     compilationFn = (topLevelExpressionInModule importsFor moduleDependencies moduleName)
     {js} = compileCtxAstToJs compilationFn, ctx, expression
     (finalizeTypes ctx, expression)
-    js: library + immutable + (listOfLines map lookupJs, modules) + '\n;' + js
+    js: library + immutable + (listOfLines map lookupJs, (setToArray runtimeDependencies moduleName)) + '\n;' + js
     ast: ast
     errors: checkTypes ctx
 

    if not lookupCompiledModule requiredModuleName
      return request: requiredModuleName
  replaceOrAddToMap moduleGraph, moduleName, requires: requiredMap
  toInject = collectRequiresFor moduleName
  ctx = injectedContext toInject
  defaultImports = (subtractSets (newSetWith 'Prelude'), (newSetWith moduleName))
  compilationFn = (topLevelModule moduleName, importsFor defaultImports)

  modules: setToArray modules

moduleDependencies = (moduleName) ->
  concatSets (requiresFor moduleName), (newSetWith moduleName)

runtimeDependencies = (moduleName) ->
  concatSets (collectRequiresFor moduleName), (newSetWith moduleName)

reverseModuleDependencies = (moduleName) ->
  concatSets (newSetWith moduleName), (requiresFor moduleName)

# Primitive type checking for now
checkTypes = (ctx) ->
