     # object. Beware, this must be a singular, simple function, not
     # a constructor, not a bound method. It must not have any sort
     # of dependencies, because it will executed in different place.
-    constructor: (executable) -> @sourcing executable
+    constructor: (executable) ->
+        detected = _.isFunction executable
+        executable = "The argument is not a function"
+        throw new Error executable unless detected
+        @sourcing executable; this
 
     # Generation of string representation of the function invocation
     # in JavaScript, so that it can be executed remotely on site. An

# This method is better than explicitly creating new objects, since
# it is shorter and has nicer syntax. Please use this, instead of
# directly creating new objectables. Refer to the later for info.
module.exports.objectable = (objectable) ->
    detected = _.isFunction objectable
    passed = -> objectable.length is 0
    objectable = "The argument is not a function"
    wrapping = "The wrapper must not have arguments"
    throw new Error objectable unless detected
    throw new Error wrapping unless passed()
    return new Objectable objectable

# A shorthand method for creating new instances of the executables.
# This method is better than explicitly creating new objects, since
# it is shorter and has nicer syntax. Please use this, instead of
# directly creating new executable. Refer to the later for info.
module.exports.executable = (executable) ->
    detected = _.isFunction executable
    executable = "The argument is not a function"
    throw new Error executable unless detected
    return new Executable executable

# A formal abstract base class for all remoted objects. It merely
# shapes up the common interfaces exposed by all of the remotable

logger = require "winston"
events = require "events"
colors = require "colors"
assert = require "assert"
nconf = require "nconf"
https = require "https"
paths = require "path"
