 	<cfscript>
 		var loc = {};
 
-		if (application.wheels.environment != "production" && Len(arguments.include) && arguments.returnAs == "objects")
-			$throw(type="Wheels", message="Incorrect Arguments", extendedInfo="You cannot include associations when returning an array of objects.");
+		// we only allow one association to be loaded when returning objects
+		if (application.wheels.environment != "production" && arguments.returnAs == "objects" && (Find(",", arguments.include) || Find("(", arguments.include)))
+			$throw(type="Wheels", message="Incorrect Arguments", extendedInfo="You cannot include more than one association when returning an array of objects.");
 
 		// count records and get primary keys for pagination
 		if (arguments.page)

		loc.create = arguments.$create;
		arguments.maxRows = 1;
		StructDelete(arguments, "$create");
		loc.query = findAll(argumentCollection=arguments);
		if (loc.create)
		{

		// setup object properties in the this scope
		if (IsQuery(arguments.properties) && arguments.properties.recordCount != 0)
		{
			loc.allProperties = ListAppend(variables.wheels.class.propertyList, variables.wheels.class.calculatedPropertyList);
			loc.iEnd = ListLen(loc.allProperties);
			for (loc.i=1; loc.i <= loc.iEnd; loc.i++)
			{
				loc.iItem = ListGetAt(loc.allProperties, loc.i);
				if (ListFindNoCase(arguments.properties.columnList, arguments.name & loc.iItem))
					this[loc.iItem] = arguments.properties[arguments.name & loc.iItem][arguments.row];
				else if (ListFindNoCase(arguments.properties.columnList, loc.iItem))
					this[loc.iItem] = arguments.properties[loc.iItem][arguments.row];
			}
		}
		else if (IsStruct(arguments.properties) && !StructIsEmpty(arguments.properties))
