                 }
                 return json
             }() {
-                try mapFromJson(baseJSON, toField: &field, mapping: mapping, context: binding.context)
+                try map(from: baseJSON, to: &field, using: mapping, context: binding.context)
             }
             else {
                 let userInfo = [ NSLocalizedFailureReasonErrorKey : "JSON at key path \(binding.key) does not exist to map from" ]

            try binding.context.json = Crust.map(to: json, from: field, via: key, using: mapping)
        case .fromJSON:
            if let baseJSON = binding.context.json[binding.key] {
                try mapFromJson(baseJSON, toField: &field, mapping: mapping, context: binding.context)
            }
            else {
                let userInfo = [ NSLocalizedFailureReasonErrorKey : "JSON at key path \(binding.key) does not exist to map from" ]

    }
}

private func map<T, U: Mapping>(from json: JSONValue, to field: inout T, using mapping: U, context: MappingContext) throws where U.MappedObject == T {
    
    let mapper = Mapper<U>()
    field = try mapper.map(from: json, using: mapping, parentContext: context)
}

private func map<T, U: Mapping>(from json: JSONValue, to field: inout T?, using mapping: U, context: MappingContext) throws where U.MappedObject == T {
    
    if case .null = json {
        field = nil
