 			loc.arguments.key = $createPrimaryKeyList(params=arguments.value, keys=loc.model.primaryKey());
 
 			if (IsObject(arguments.value))
+			{
 				loc.object = arguments.value;
+			}
 			else if (Len(loc.arguments.key))
+			{
 				loc.object = loc.model.findByKey(argumentCollection=loc.arguments);
-
+			}
 			if (StructKeyExists(arguments.value, "_delete") && IsBoolean(arguments.value["_delete"]) && arguments.value["_delete"])
+			{
 				loc.delete = true;
-
+			}
 			if (!IsObject(loc.object) && !loc.delete)
 			{
-				StructDelete(loc.arguments, "key", false);
+				StructDelete(loc.arguments, "key");
 				return $invoke(componentReference=loc.model, method="new", invokeArgs=loc.arguments);
 			}
 			else if (Len(loc.arguments.key) && loc.delete && arguments.association.nested.delete && arguments.delete)

			if (loc.association.nested.allow && loc.association.nested.autoSave && StructKeyExists(this, loc.item))
			{
				if (ListFindNoCase("belongsTo,hasOne", loc.association.type) && IsStruct(this[loc.item]))
					$setOneToOneAssociationProperty(property=loc.item, value=this[loc.item], association=loc.association, delete=true);
				else if (loc.association.type == "hasMany" && IsArray(this[loc.item]) && ArrayLen(this[loc.item]))
					$setCollectionAssociationProperty(property=loc.item, value=this[loc.item], association=loc.association, delete=true);
			}
		}
	</cfscript>
	<cfreturn true />
</cffunction>

<cffunction name="$setOneToOneAssociationProperty" returntype="void" access="public" output="false">
	<cfargument name="property" type="string" required="true" />
	<cfargument name="value" type="struct" required="true" />
	<cfargument name="association" type="struct" required="true" />
	<cfargument name="delete" type="boolean" required="false" default="false" />
	<cfscript>
		if (!StructKeyExists(this, arguments.property) || !IsObject(this[arguments.property]) || StructKeyExists(this[arguments.property], "_delete"))
			this[arguments.property] = $getAssociationObject(argumentCollection=arguments);

		if (IsObject(this[arguments.property]))
			this[arguments.property].setProperties(properties=arguments.value);
		else
			StructDelete(this, arguments.property, false);
	</cfscript>
	<cfreturn />
</cffunction>

<cffunction name="$setCollectionAssociationProperty" returntype="void" access="public" output="false">
	<cfargument name="property" type="string" required="true" />
	<cfargument name="value" type="any" required="true" />
	<cfargument name="association" type="struct" required="true" />
	<cfargument name="delete" type="boolean" required="false" default="false" />
	<cfscript>
		var loc = {};
		loc.model = model(arguments.association.modelName);

		if (!StructKeyExists(this, arguments.property) || !IsArray(this[arguments.property]))
			this[arguments.property] = [];

		if (IsStruct(arguments.value))
		{
			for (loc.item in arguments.value)

				variables.wheels.class.associations[loc.association].nested.autoSave = arguments.autoSave;
				variables.wheels.class.associations[loc.association].nested.sortProperty = arguments.sortProperty;
				variables.wheels.class.associations[loc.association].nested.rejectIfBlank = $listClean(arguments.rejectIfBlank);
				
				// add to the white list if it exists
				if (StructKeyExists(variables.wheels.class.accessibleProperties, "whiteList"))
				{
					variables.wheels.class.accessibleProperties.whiteList = ListAppend(variables.wheels.class.accessibleProperties.whiteList, loc.association, ",");
				}
			}
			else if (application.wheels.showErrorInformation)
			{
