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

        switch map.context.dir {
        case .toJSON:
            let json = map.context.json
            try map.context.json = mapToJson(json, fromField: field, viaKey: key, mapping: mapping)
        case .fromJSON:
            // TODO: again, need to allow for `nil` keypaths.
            if let baseJSON: JSONValue = {


// MARK: - To JSON

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