 
 			if (Len(loc.arguments.key))
 				loc.object = loc.model.findByKey(argumentCollection=loc.arguments);
-
-			if (!IsObject(loc.object) && (!StructKeyExists(arguments.value, "_delete") || (IsBoolean(arguments.value["_delete"]) && !arguments.value["_delete"])))
+		
+			if (StructKeyExists(arguments.value, "_delete") && IsBoolean(arguments.value["_delete"]) && arguments.value["_delete"])
+				loc.delete = true;
+			
+			if (!IsObject(loc.object) && !loc.delete)
 			{
 				loc.method = "new";
 				StructDelete(loc.arguments, "key", false);
 			}
-			else if (IsObject(loc.object) && (!StructKeyExists(arguments.value, "_delete") || (IsBoolean(arguments.value["_delete"]) && !arguments.value["_delete"])))
+			else if (IsObject(loc.object) && !loc.delete)
 			{
 				loc.method = "findByKey";
 			}
-			else if (Len(loc.arguments.key) && StructKeyExists(arguments.value, "_delete") && IsBoolean(arguments.value["_delete"]) && arguments.value["_delete"])
+			else if (Len(loc.arguments.key) && loc.delete)
 			{
 				loc.method = "deleteByKey";
 			}
-
+			
 			if (Len(loc.method))
 				loc.returnValue = $invoke(componentReference=loc.model, method=loc.method, argumentCollection=loc.arguments);
-		}
+		}	
 	</cfscript>
 	<cfreturn loc.returnValue />
 </cffunction>

	<cfargument name="association" type="struct" required="true" />
	<cfscript>
		this[arguments.property] = $getAssociationObject(argumentCollection=arguments);

		if (IsObject(this[arguments.property]))
			this[arguments.property].setProperties(properties=arguments.value);
		else

	<cfscript>
		var loc = {};
		loc.returnValue = "";
		
		loc.iEnd = ListLen(arguments.keys);
		for (loc.i = 1; loc.i lte loc.iEnd; loc.i++)
		{
			loc.key = ListGetAt(arguments.keys, loc.i);
			if (!StructKeyExists(arguments.params, loc.key) || !Len(arguments.params[loc.key]))
				return "";
			loc.returnValue = ListAppend(loc.returnValue, arguments.params[loc.key]);	
		}
	</cfscript>
	<cfreturn loc.returnValue />
