 		else
 			arguments.missingMethodArguments.key = loc.keyOrObject;
 	</cfscript>
-</cffunction>
-
-<cffunction name="$propertyValue" returntype="string" access="public" output="false">
-	<cfargument name="name" type="string" required="true">
-	<cfscript>
-		var loc = {};
-		loc.returnValue = "";
-		loc.iEnd = ListLen(arguments.name);
-		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
-		{
-			loc.returnValue = ListAppend(loc.returnValue, this[ListGetAt(arguments.name, loc.i)]);
-		}
-	</cfscript>
-	<cfreturn loc.returnValue>
-</cffunction>
-
-<cffunction name="$setForeignKeyValues" returntype="void" access="public" output="false">
-	<cfargument name="missingMethodArguments" type="struct" required="true">
-	<cfargument name="keys" type="string" required="true">
-	<cfargument name="setToNull" type="boolean" required="false" default="false">
-	<cfscript>
-		var loc = {};
-		loc.iEnd = ListLen(arguments.keys);
-		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
-		{
-			if (arguments.setToNull)
-				arguments.missingMethodArguments[ListGetAt(arguments.keys, loc.i)] = "";
-			else
-				arguments.missingMethodArguments[ListGetAt(arguments.keys, loc.i)] = this[ListGetAt(variables.wheels.class.keys, loc.i)];
-		}
-	</cfscript>
-</cffunction>
-
-<cffunction name="properties" returntype="any" access="public" output="false">
-	<cfargument name="values" type="any" required="false" default="">
-	<cfscript>
-	var loc = {};
-
-	// when a structure is passed in, set the properties of the object to values within the structure
-	if(isStruct(arguments.values))
-	{
-		for(loc.key in arguments.values)
-		{
-			if(ListFindNoCase(variables.wheels.class.propertyList, loc.key))
-			{
-				this[loc.key] = arguments.values[loc.key];
-			}
-		}
-		return;
-	}
-
-	// by default we will return a structure containing the properties and their current values
-	loc.returnvalue = {};
-	loc.properties = ListToArray(variables.wheels.class.propertyList);
-	loc.iEnd = ArrayLen(loc.properties);
-	for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
-	{
-		loc.property = loc.properties[loc.i];
-		loc.returnvalue[loc.property] = "";
-		if(structkeyexists(this, loc.property))
-		{
-			loc.returnvalue[loc.property] = this[loc.property];
-		}
-		else
-		{
-			loc.returnvalue[loc.property] = variables.wheels.class.properties[loc.property].defaultValue;
-		}
-	}
-	return loc.returnvalue;
-	</cfscript>
 </cffunction>
<cffunction name="$setDefaultValues" returntype="any" access="public" output="false">
	<cfscript>
		var loc = {};
		loc.iEnd = ListLen(variables.wheels.class.propertyList);
		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
		{
			loc.iItem = ListGetAt(variables.wheels.class.propertyList, loc.i);
			if (Len(variables.wheels.class.properties[loc.iItem].defaultValue) && (!StructKeyExists(this, loc.iItem) || !Len(this[loc.iItem])))
			{
				// set the default value unless it is blank or a value already exists for that property on the object
				this[loc.iItem] = variables.wheels.class.properties[loc.iItem].defaultValue;
			}
		}
	</cfscript>
</cffunction>

<cffunction name="table" returntype="void" access="public" output="false" hint="Use this method to tell Wheels what database table to connect to for this model. You only need to use this method when your table naming does not follow the standard Wheels conventions of a singular object name mapping to a plural table name (i.e. `User.cfc` mapping to the table `users` for example).">
	<cfargument name="name" type="string" required="true" hint="Name of the table to map this model to">
	<cfscript>
		variables.wheels.class.tableName = arguments.name;
	</cfscript>
</cffunction>

<cffunction name="tableName" returntype="string" access="public" output="false" hint="Returns the name of the database table that this model is mapped to.">
	<cfreturn variables.wheels.class.tableName>
</cffunction>

<cffunction name="property" returntype="void" access="public" output="false" hint="Use this method to map an object property to either a table column with a different name than the property, to a specific SQL calculation or to a ColdFusion method. You only need to use this method when you want to override the default mapping that Wheels performs (i.e. `user.firstName` mapping to `users.firstname` for example).">
	<cfargument name="name" type="string" required="true" hint="Name of the property">
	<cfargument name="column" type="string" required="false" default="" hint="Name of the column to map the property to">
	<cfargument name="sql" type="string" required="false" default="" hint="SQL to use to calculate property value">
	<cfscript>
		variables.wheels.class.mapping[arguments.name] = {};
		if (Len(arguments.column))

	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="$propertyValue" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfscript>
		var loc = {};
		loc.returnValue = "";
		loc.iEnd = ListLen(arguments.name);
		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
		{
			loc.returnValue = ListAppend(loc.returnValue, this[ListGetAt(arguments.name, loc.i)]);
		}
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="$setDefaultValues" returntype="any" access="public" output="false">
	<cfscript>
		var loc = {};
		loc.iEnd = ListLen(variables.wheels.class.propertyList);
		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
		{
			loc.iItem = ListGetAt(variables.wheels.class.propertyList, loc.i);
			if (Len(variables.wheels.class.properties[loc.iItem].defaultValue) && (!StructKeyExists(this, loc.iItem) || !Len(this[loc.iItem])))
			{
				// set the default value unless it is blank or a value already exists for that property on the object
				this[loc.iItem] = variables.wheels.class.properties[loc.iItem].defaultValue;
			}
		}
	</cfscript>
</cffunction>

<cffunction name="$setForeignKeyValues" returntype="void" access="public" output="false">
	<cfargument name="missingMethodArguments" type="struct" required="true">
	<cfargument name="keys" type="string" required="true">
	<cfargument name="setToNull" type="boolean" required="false" default="false">
	<cfscript>
		var loc = {};
		loc.iEnd = ListLen(arguments.keys);
		for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
		{
			if (arguments.setToNull)
				arguments.missingMethodArguments[ListGetAt(arguments.keys, loc.i)] = "";
			else
				arguments.missingMethodArguments[ListGetAt(arguments.keys, loc.i)] = this[ListGetAt(variables.wheels.class.keys, loc.i)];
		}
	</cfscript>
</cffunction>

