 
 // MARK: - To JSON
 
-private func map<T: JSONable>(to json: JSONValue, fromField field: T?, viaKey key: JSONKeypath) -> JSONValue where T == T.ConversionType {
+private func map<T: JSONable>(to json: JSONValue, from field: T?, via key: JSONKeypath) -> JSONValue where T == T.ConversionType {
     var json = json
     
     if let field = field {

        switch binding.context.dir {
        case .toJSON:
            let json = binding.context.json
            try binding.context.json = Crust.map(to: json, fromField: field, viaKey: key, mapping: mapping)
        case .fromJSON:
            if let baseJSON = binding.context.json[binding.key] {
                try mapFromJson(baseJSON, toField: &field, mapping: mapping, context: binding.context)

    return json
}

private func map<T, U: Mapping>(to json: JSONValue, from field: T?, via key: Keypath, using mapping: U) throws -> JSONValue where U.MappedObject == T {
    var json = json
    
    guard let field = field else {
