 
     defs = @definitions
     rv = Object.keys(defs).reduce((rv, key) ->
-        if Object::hasOwnProperty.call(aObject, key)
+        if _.hasProperty(aObject, key)
             rv[key] = aObject[key]
         return rv
     , Object.create(null))
     return rv
 
+
+# Public: Coerce the properties of an Object using the coerce functions defined
+# by this Model.
+#
+# aObject - The source Object.
+#
+# Returns a new Object with own, enumerable properties defined from aSource
+# after each property of aSource has been passed through the corresponding
+# coerce function defined by this Model. If no coerce function is defined on
+# this Model for the property, then it is simply defined as is.
 Model.coerce = (aObject) ->
     if Object(aObject) isnt aObject
         msg = "Model::coerce(aObject) expects an Object as the single parameter."

    , Object.create(null))
    return rv

Model.validate = (aObject) ->
    errors = Object.create(null)
    defs = @definitions

# Model is the prototype for all Object models.
exports.Model = Model = Object.create(null)


# Public: Create a new Object using the default property values defined by the
# Model.
#
# aSource - The source Object to get properties from
#           (default: Object.create(null)).
#
# Properties will be defined on the new Object according to the defaultValue
# given in the Model definition for each property if the property is not an own
# property of aSource.
#
# Returns a new Object with own, enumerable properties defined from aSource and
# the default property values of the Model.
