 # directly creating new objectables. Refer to the later for info.
 module.exports.objectable = (parameters...) ->
     objectable = new Objectable parameters...
-    objectable.sourcing()().remote = objectable
-    check = _.isObject objectable.sourcing()()
-    assert.ok check; objectable.sourcing()()
+    compiledOnce = objectable.sourcing()()
+    compiledOnce.remote = objectable
+    check = _.isObject compiledOnce
+    assert.ok check; compiledOnce
 
 # A shorthand method for creating new instances of the executables.
 # This method is better than explicitly creating new objects, since

    # and a set of arguments that must be scalars or similar to them.
    # This method does not do any processing of args, inserts raws.
    unprocessed: (binder, parameters...) ->
        detected = _.isFunction @sourcing()
        executable = "No valid executable has been set"
        throw new Error executable unless detected
        parameters.unshift binder or "this"
        joined = parameters.join(", ").toString()
        stringified = @sourcing().toString()

    # only a set of arguments that must be scalars or similar to them.
    # This method does not do any processing of args, inserts raws.
    unprocessed: (parameters...) ->
        barebones = @sourcing().length is 0
        functional = _.isFunction @sourcing()
        inconsistent = "The argument is not a function"
        wrapping = "The wrapper must not have arguments"
        throw new Error inconsistent unless functional
        throw new Error wrapping unless barebones
        joined = parameters.join(", ").toString()
        stringified = @sourcing().toString()
        "new ((#{stringified})()) (#{joined})"
