 	}
 	
 	fileprivate func setupCommons() {
+		self.commons.valueBlock = { (instance, value, key) -> AnyObject? in
+			guard let dict = value as? [String: AnyObject] else { return nil }
+			return dict[key] as AnyObject
+		}
+		
 		self.commons.primitiveValueBlock = { (instance, value, key) -> Void in
 			instance.setValue(value, forKey: key)
 		}

		}
		
		self.commons.objectValueBlock = { [weak self] (instance, typeInfo, value, key) -> Void in
			self?.populateObject(forKey: key, intoInstance: instance, withTypeInfo: typeInfo, withJsonObject: value as! [String : AnyObject])
		}
		
		self.commons.arrayValueBlock = { [weak self] (instance, typeInfo, value, key) -> Void in
			self?.populateArray(forKey: key, intoInstance: &instance, withTypeInfo: typeInfo, withJsonArray: value as! [AnyObject])
		}
	}
	

		guard let data = string.data(using: .utf8) else { return nil }
		guard let jsonObject = try! JSONSerialization.jsonObject(with: data, options: options) as? [String: AnyObject] else { return nil }
	
		self.setupCommons()
		
		let instance: AnyObject = (getInstance() as T) as AnyObject
		self.commons.populate(instance: instance, withObject: jsonObject as AnyObject, withConfig: config)
		
		self.unsetupCommons()
		
