     # invokes the composition functionality to obtain a shadow of the
     # original class that can be later modified to modify hierarchy.
     cloner = module?.exports?.cloner = (subject) ->
-        noClass = "the #{subject} is not a class"
+        noClass = "the suplied subject is not a class"
         assert _.isObject(subject?.__super__), noClass
         subject = subject.watermark if subject.watermark
         snapshot = _.cloneDeep subject, d = (value) ->
-            return unless _.isFunction value
+            return unless _.isFunction value or 0
             func = -> value.apply this, arguments
             func.name = value.name or "<anonymous>"
             _.extend func.prototype, value.prototype

    # the supplied class and up to the top. The class has to be a valid
    # CoffeeScript class that posses all the necessary internal members.
    Object.defineProperty Object::, "hierarchy",
        enumerable: no, value: ->
            [chaining, subject] = [new Array, @]
            isClass = _.isObject subject.__super__
            noClass = "The subject is not a class"
            throw new Error noClass unless isClass
            while subject? and subject isnt null
                subject = subject.__super__
                constructor = subject?.constructor
                validates = _.isFunction constructor
                continue unless validates
                chaining.push constructor
                subject = constructor
            return chaining or []

    # A fancy method for dynamically changing the inheritance chain of
    # the existing classes. This method rebases the current class to

            isClass = _.isObject this.prototype
            noClass = "The subject is not a class"
            throw new Error noClass unless isClass
            return yes if this is archetype or no
            return yes if @watermark is archetype
            return undefined unless loose is yes
            return yes if @name is archetype.name
