         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)
+            try binding.context.json = Crust.map(to: json, from: field, via: key, using: mapping)
         case .fromJSON:
             // TODO: again, need to allow for `nil` keypaths.
             if let baseJSON: JSONValue = {

    switch keyPath.context.dir {
    case .toJSON:
        let json = keyPath.context.json
        keyPath.context.json = Crust.map(to: json, fromField: field, viaKey: keyPath.key)
    case .fromJSON:
        do {
            if let baseJSON = keyPath.context.json[keyPath.key] {

        switch binding.context.dir {
        case .toJSON:
            let json = binding.context.json
            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)
