                     if let date = AbstractModel.dateFromString(value) {
                         try assignValue(date, forProperty: property)
                     } else if shouldFailWithInvalidValue(value, forProperty: property) {
-                        throw ModelError.DateError(property: property)
+                        throw ModelError.DateError(property: property, value: value)
                     }
                 } else if shouldFailWithInvalidValue(rawValue, forProperty: property) {
                     throw ModelError.SourceValueError(property: property)

                        try assignValue(number, forProperty: property)
                    } else if shouldFailWithInvalidValue(number, forProperty: property) {
                        throw ModelError.SourceValueError(property: property)
                    }
                } else if shouldFailWithInvalidValue(rawValue, forProperty: property) {
                    throw ModelError.SourceValueError(property: property)

public enum ModelError: ErrorType {
    case SourceValueError(property: String)
    case ValueTypeError(property: String?)
    case DateError(property: String?, value: String?)
    case URLError(property: String?, value: String?)
    case InstanciationError
    case InvalidProperty(property: String)
    case UndefinedType(type: Any.Type)
