   # return synthesized object hierarchy.
   ###
 
-  compile: (schema, source={}, scope) ->
+  compile: (schema, source=YANG_V1_SPEC, scope) ->
     return @fork arguments.callee, schema, source, true unless scope?
     @source = source
 
     schema = (schema.call this) if schema instanceof Function
-    schema = (@preprocess schema, source) unless source.extension?
+    #schema = (@preprocess schema, source) unless source.extension?
+    schema = @preprocess schema, source unless schema instanceof Object
     unless schema instanceof Object
       throw @error "must pass in proper 'schema' to compile"
 

    res.context = context
    return res

  ###
  # The `parse` function performs recursive parsing of passed in statement
  # and sub-statements and usually invoked in the context of the

            throw @error "[compile:#{source.name}] failed to compile '#{key} #{arg}'", schema
    return output

#
# declare exports
#
exports = module.exports = new Compiler
exports.Compiler = Compiler
exports.Module = class extends synth.Model
  @schema = (s) ->
    obj = (exports.compile s, YANG_V1_SPEC)
    (@extend obj).merge schema: obj
