 	<cfargument name="maximum" type="numeric" required="true">
 	<cfargument name="minimum" type="numeric" required="true">
 	<cfargument name="within" type="any" required="true">
-	<cfargument name="$properties" type="struct" required="false" default="#properties()#">
-	<cfargument name="$test" type="boolean" required="false" default="false">
+	<cfargument name="properties" type="struct" required="false" default="#this.properties()#">
+	<cfargument name="returnAs" type="string" required="false" default="">
 	<cfscript>
 		var args = {};
 		if (arguments.maximum)
 		{
-			if (Len(arguments.$properties[arguments.property]) > arguments.maximum)
+			if (Len(arguments.properties[arguments.property]) > arguments.maximum)
 				args = {property=arguments.property, message=$validationErrorMessage(arguments.property, arguments.message)};
 		}
 		else if (arguments.minimum)
 		{
-			if (Len(arguments.$properties[arguments.property]) < arguments.minimum)
+			if (Len(arguments.properties[arguments.property]) < arguments.minimum)
 				args = {property=arguments.property, message=$validationErrorMessage(arguments.property, arguments.message)};
 		}
 		else if (arguments.exactly)
 		{
-			if (Len(arguments.$properties[arguments.property]) != arguments.exactly)
+			if (Len(arguments.properties[arguments.property]) != arguments.exactly)
 				args = {property=arguments.property, message=$validationErrorMessage(arguments.property, arguments.message)};
 		}
 		else if (IsArray(arguments.within) && ArrayLen(arguments.within))
 		{
-			if (Len(arguments.$properties[arguments.property]) < arguments.within[1] || Len(arguments.$properties[arguments.property]) > arguments.within[2])
+			if (Len(arguments.properties[arguments.property]) < arguments.within[1] || Len(arguments.properties[arguments.property]) > arguments.within[2])
 				args = {property=arguments.property, message=$validationErrorMessage(arguments.property, arguments.message)};
 		}
-		if (arguments.$test)
+		if (Len(arguments.returnAs))
 			return args;
 		else if (!StructIsEmpty(args))
 			addError(argumentCollection=args);

	<cfscript>
		if (!ListFindNoCase(arguments.list, this[arguments.property]))
			addError(property=arguments.property, message=$validationErrorMessage(arguments.property, arguments.message));
	</cfscript>
</cffunction>


	</cfscript>
</cffunction>

<cffunction name="$validatesUniquenessOf" returntype="any" access="public" output="false" hint="Adds an error if the object property fail to pass the validation setup in the @validatesUniquenessOf method.">
	<cfargument name="property" type="string" required="true">
	<cfargument name="message" type="string" required="true">
	<cfargument name="scope" type="string" required="false" default="">
	<cfargument name="properties" type="struct" required="false" default="#this.properties()#">
	<cfargument name="returnAs" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		loc.args = {};

		// create the WHERE clause to be used in the query that checks if an identical value already exists
		// wrap value in single quotes unless it's numeric
