 }
 
 /// Implicitly unwrapped Optional Dictionary of Mappable object <String, T: Mappable> with a transform
-public func <- <T: Mappable, Transform: TransformType where Transform.Object == T>(inout left: Dictionary<String, T>!, right: (Map, Transform)) {
+public func <- <Transform: TransformType where Transform.Object: Mappable>(inout left: Dictionary<String, Transform.Object>!, right: (Map, Transform)) {
 	let (map, transform) = right
 	if let dictionary = map.currentValue as? [String : AnyObject] where map.mappingType == MappingType.FromJSON {
 		let transformedDictionary = fromJSONDictionaryWithTransform(dictionary, transform: transform) ?? left

// MARK:- Array of Mappable objects with transforms - Array<T: Mappable>

/// Array of Mappable objects
public func <- <T: Mappable, Transform: TransformType where Transform.Object == T>(inout left: Array<T>, right: (Map, Transform)) {
	let (map, transform) = right
	if map.mappingType == MappingType.FromJSON {
		if let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform) {

}

/// Optional array of Mappable objects
public func <- <Transform: TransformType where Transform.Object: Mappable>(inout left: Array<Transform.Object>?, right: (Map, Transform)) {
	let (map, transform) = right
	if map.mappingType == MappingType.FromJSON {
		let transformedValues = fromJSONArrayWithTransform(map.currentValue, transform: transform)
