         }
         if let json = jsonDictionary {
             for key: String in json.keys{
-                var propertyKey = shouldConvertSnakeCase ? convertToCamelCase(key) : key
-                for propertyName in keyMap.keys {
-                    if keyMap[propertyName] == key {
-                        propertyKey = propertyName
-                        break;
-                    }
-                }
+                let propertyKey = transformPropertyKey(key, keyMap)
                 if object.responds(to: Selector(propertyKey)) {
                     let propertyClassName = propertyTypeStringForName(object, name: propertyKey)!
                     var isDeserialized = false

            }
        }
        return nil
    }
    
    func setValueOfObject(_ object: AnyObject, value: AnyObject, key: String) {

                    if !isDeserialized {
                        if let jsonValue = json[key] {
                            if jsonValue.isKind(of: NSDictionary.self) {
                                handleDictionary(object: object, propertyKey: propertyKey, json: json, key: key)
                            }else if jsonValue.isKind(of: NSArray.self) {
                                handleArray(object: object, propertyKey: propertyKey, json: json, key: key)
                            }else if !(json[key] is NSNull) {
                                setValueOfObject(object, value: json[key]!, key: propertyKey)
                            }
