     imports name, names)
 
 exportAll = (ctx, definitions) ->
-  nonVirtual = filterMap ((name, declaration) -> not declaration.virtual), ctx._scope()
+  shouldBeExported = (name, declaration) ->
+    not declaration.virtual and declaration.final
+  nonVirtual = filterMap shouldBeExported, ctx._scope()
   exported = subtractSets nonVirtual, builtInDefinitions()
   exportList = map validIdentifier, (setToArray exported)
   (iife (concat [

  nameIndex
  # suffix = if nameIndex >= 25 then freshName (Math.floor nameIndex / 25) - 1 else ''
  # (String.fromCharCode 97 + nameIndex % 25) + suffix

mapOrigin = (type, expression) ->
  if type.TypeApp

      if name = ctx.isAtSimpleDefinition()
        # Explicit typing
        if type
          compiledType = typeConstrainedCompile ctx, type
          explicitType = preDeclareExplicitlyTyped ctx, compiledType
          ctx.assignArity name, paramNames
        else
          ctx.preDeclare name,
