<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -29,7 +29,7 @@
 	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
 
-&lt;!--- PRIVATE CONTROLLER FUNCTIONS ---&gt;
+&lt;!--- PRIVATE FUNCTIONS ---&gt;
 
 &lt;cffunction name=&quot;$getCachableActions&quot; returntype=&quot;array&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
 	&lt;cfreturn variables.wheels.cachableActions&gt;</diff>
      <filename>wheels/controller/caching.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -53,7 +53,7 @@
 	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
 
-&lt;!--- PRIVATE CONTROLLER FUNCTIONS ---&gt;
+&lt;!--- PRIVATE FUNCTIONS ---&gt;
 
 &lt;cffunction name=&quot;$getBeforeFilters&quot; returntype=&quot;array&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
 	&lt;cfreturn variables.wheels.beforeFilters&gt;</diff>
      <filename>wheels/controller/filters.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-&lt;!--- PRIVATE CONTROLLER FUNCTIONS ---&gt;
+&lt;!--- PRIVATE FUNCTIONS ---&gt;
 
 &lt;cffunction name=&quot;$initControllerClass&quot; returntype=&quot;any&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot;&gt;</diff>
      <filename>wheels/controller/initialization.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,27 @@
 &lt;!--- PUBLIC CONTROLLER REQUEST FUNCTIONS ---&gt;
 
+&lt;cffunction name=&quot;isAjax&quot; returntype=&quot;boolean&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns whether the page was called from JavaScript or not.&quot;
+	examples=
+	'
+		&lt;cfset requestIsAjax = isAjax()&gt;
+	'
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;isGet,isPost&quot;&gt;
+	&lt;cfscript&gt;
+		var returnValue = &quot;&quot;;
+		if (request.cgi.http_x_requested_with == &quot;XMLHTTPRequest&quot;)
+			returnValue = true;
+		else
+			returnValue = false;
+	&lt;/cfscript&gt;
+	&lt;cfreturn returnValue&gt;
+&lt;/cffunction&gt;
+
 &lt;cffunction name=&quot;isGet&quot; returntype=&quot;boolean&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns whether the request was a normal (GET) request or not.&quot;
 	examples=
 	'
 		&lt;cfset requestIsGet = isGet()&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;&quot; functions=&quot;isAjax,isPost&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;isAjax,isPost&quot;&gt;
 	&lt;cfscript&gt;
 		var returnValue = &quot;&quot;;
 		if (request.cgi.request_method == &quot;get&quot;)
@@ -21,7 +37,7 @@
 	'
 		&lt;cfset requestIsPost = isPost()&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;&quot; functions=&quot;isAjax,isGet&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;isAjax,isGet&quot;&gt;
 	&lt;cfscript&gt;
 		var returnValue = &quot;&quot;;
 		if (request.cgi.request_method == &quot;post&quot;)
@@ -32,20 +48,25 @@
 	&lt;cfreturn returnValue&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;isAjax&quot; returntype=&quot;boolean&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns whether the page was called from JavaScript or not.&quot;
+&lt;cffunction name=&quot;pagination&quot; returntype=&quot;struct&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns a struct with information about the specificed paginated query. The variables that will be returned are `currentPage`, `totalPages` and `totalRecords`.&quot;
 	examples=
 	'
-		&lt;cfset requestIsAjax = isAjax()&gt;
+		&lt;cfparam name=&quot;params.page&quot; default=&quot;1&quot;&gt;
+		&lt;cfset allAuthors = model(&quot;author&quot;).findAll(page=params.page, perPage=25, order=&quot;lastName&quot;, handle=&quot;authorsData&quot;)&gt;
+		&lt;cfset paginationData = pagination(&quot;authorsData&quot;)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;&quot; functions=&quot;isGet,isPost&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;getting-paginated-data,displaying-links-for-pagination&quot; functions=&quot;paginationLinks,findAll&quot;&gt;
+	&lt;cfargument name=&quot;handle&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;query&quot; hint=&quot;The handle given to the query to return pagination information for.&quot;&gt;
 	&lt;cfscript&gt;
-		var returnValue = &quot;&quot;;
-		if (request.cgi.http_x_requested_with == &quot;XMLHTTPRequest&quot;)
-			returnValue = true;
-		else
-			returnValue = false;
+		if (application.wheels.showErrorInformation)
+		{
+			if (!StructKeyExists(request.wheels, arguments.handle))
+			{
+				$throw(type=&quot;Wheels.QueryHandleNotFound&quot;, message=&quot;Wheels couldn't find a query with the handle of `#arguments.handle#`.&quot;, extendedInfo=&quot;Make sure your `findAll` call has the `page` argument specified and matching `handle` argument if specified.&quot;);
+			}
+		}
 	&lt;/cfscript&gt;
-	&lt;cfreturn returnValue&gt;
+	&lt;cfreturn request.wheels[arguments.handle]&gt;
 &lt;/cffunction&gt;
 
 &lt;cffunction name=&quot;sendEmail&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Sends an email using a template and an optional layout to wrap it in.&quot;
@@ -55,7 +76,7 @@
 		&lt;cfset member = model(&quot;member&quot;).findByKey(newMember.id)&gt;
 		&lt;cfset sendEmail(to=member.email, template=&quot;myemailtemplate&quot;, subject=&quot;Thank You for Becoming a Member&quot;, recipientName=member.name, startDate=member.startDate)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;sending-email&quot; functions=&quot;&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;sending-email&quot; functions=&quot;&quot;&gt;
 	&lt;cfargument name=&quot;templates&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The path to the email template or two paths if you want to send a multipart email. if the `detectMultipart` argument is `false` the template for the text version should be the first one in the list (can also be called with the `template` argument).&quot;&gt;
 	&lt;cfargument name=&quot;from&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Email address to send from.&quot;&gt;
 	&lt;cfargument name=&quot;to&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Email address to send to.&quot;&gt;
@@ -141,7 +162,7 @@
 		&lt;!--- Send a file that is located outside of the web root ---&gt;
 		&lt;cfset sendFile(file=&quot;../../tutorials/wheels_tutorial_20081028_J657D6HX.pdf&quot;)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;sending-files&quot; functions=&quot;&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;sending-files&quot; functions=&quot;&quot;&gt;
 	&lt;cfargument name=&quot;file&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The file to send to the user&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The file name to show in the browser download dialog box&quot;&gt;
 	&lt;cfargument name=&quot;type&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The HTTP content type to deliver the file as&quot;&gt;</diff>
      <filename>wheels/controller/miscellaneous.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@
 		&lt;!--- Redirect back to the page the user came from ---&gt;
 		&lt;cfset redirectTo(back=true)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;redirecting-users,using-routes&quot; functions=&quot;&quot;&gt;
+	categories=&quot;controller-request,miscellaneous&quot; chapters=&quot;redirecting-users,using-routes&quot; functions=&quot;&quot;&gt;
 	&lt;cfargument name=&quot;back&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot; hint=&quot;Set to `true` to redirect back to the referring page.&quot;&gt;
 	&lt;cfargument name=&quot;addToken&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.redirectTo.addToken#&quot; hint=&quot;See documentation for `cflocation`.&quot;&gt;
 	&lt;cfargument name=&quot;statusCode&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.redirectTo.statusCode#&quot; hint=&quot;See documentation for `cflocation`.&quot;&gt;</diff>
      <filename>wheels/controller/redirection.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 		&lt;!--- Render the view page for the current action but without a layout and cache it for 60 minutes ---&gt;
 		&lt;cfset renderPage(layout=false, cache=60)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPageToString,renderNothing,renderText,renderPartial&quot;&gt;
+	categories=&quot;controller-request,rendering&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderNothing,renderText,renderPartial&quot;&gt;
 	&lt;cfargument name=&quot;controller&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#variables.params.controller#&quot; hint=&quot;Controller to include the view page for.&quot;&gt;
 	&lt;cfargument name=&quot;action&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#variables.params.action#&quot; hint=&quot;Action to include the view page for.&quot;&gt;
 	&lt;cfargument name=&quot;template&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;A specific template to render.&quot;&gt;
@@ -60,7 +60,7 @@
 		&lt;!--- Render a blank white page to the browser ---&gt;
 		&lt;cfset renderNothing()&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderPageToString,renderText,renderPartial&quot;&gt;
+	categories=&quot;controller-request,rendering&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderText,renderPartial&quot;&gt;
 	&lt;cfscript&gt;
 		request.wheels.response = &quot;&quot;;
 	&lt;/cfscript&gt;
@@ -72,7 +72,7 @@
 		&lt;!--- Render just the text &quot;Done!&quot; to the browser ---&gt;
 		&lt;cfset renderText(&quot;Done!&quot;)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderPageToString,renderNothing,renderPartial&quot;&gt;
+	categories=&quot;controller-request,rendering&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderNothing,renderPartial&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;The text to be rendered.&quot;&gt;
 	&lt;cfscript&gt;
 		request.wheels.response = arguments.text;
@@ -85,7 +85,7 @@
 		&lt;!--- Render the partial `_comment.cfm` located in the current controller''s view folder ---&gt;
 		&lt;cfset renderPartial(&quot;comment&quot;)&gt;
 	'
-	categories=&quot;controller-request&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderPageToString,renderNothing,renderText&quot;&gt;
+	categories=&quot;controller-request,rendering&quot; chapters=&quot;rendering-pages&quot; functions=&quot;renderPage,renderNothing,renderText&quot;&gt;
 	&lt;cfargument name=&quot;partial&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The name of the file to be used (starting with an optional path and with the underscore and file extension excluded).&quot;&gt;
 	&lt;cfargument name=&quot;cache&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @renderPage.&quot;&gt;
 	&lt;cfargument name=&quot;layout&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.renderPartial.layout#&quot; hint=&quot;See documentation for @renderPage.&quot;&gt;
@@ -103,7 +103,7 @@
 	&lt;/cfif&gt;
 &lt;/cffunction&gt;
 
-&lt;!--- PRIVATE CONTROLLER REQUEST FUNCTIONS ---&gt;
+&lt;!--- PRIVATE FUNCTIONS ---&gt;
 
 &lt;cffunction name=&quot;$renderPageAndAddToCache&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
 	&lt;cfscript&gt;</diff>
      <filename>wheels/controller/rendering.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-&lt;!--- PUBLIC CONFIGURATION METHODS ---&gt;
+&lt;!--- PUBLIC CONFIGURATION FUNCTIONS ---&gt;
 
 &lt;cffunction name=&quot;addRoute&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Adds a new route to your application.&quot;
 	examples=
@@ -165,7 +165,7 @@
 	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
 
-&lt;!--- PUBLIC GLOBAL METHODS ---&gt;
+&lt;!--- PUBLIC GLOBAL FUNCTIONS ---&gt;
 
 &lt;!--- miscellaneous ---&gt;
 
@@ -175,7 +175,7 @@
 		&lt;!--- Get the original value from an obfuscated one ---&gt;
 		&lt;cfset originalValue = deobfuscateParam(&quot;b7ab9a50&quot;)&gt;
 	'
-	categories=&quot;global&quot; chapters=&quot;obfuscating-urls&quot; functions=&quot;obfuscateParam&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;obfuscating-urls&quot; functions=&quot;obfuscateParam&quot;&gt;
 	&lt;cfargument name=&quot;param&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Value to deobfuscate.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -219,7 +219,7 @@
 		&lt;!--- Get the default for the `message` argument on the `validatesConfirmationOf` method  ---&gt;
 		&lt;cfset setting = get(functionName&quot;validatesConfirmationOf&quot;, name=&quot;message&quot;)&gt;
 	'
-	categories=&quot;global&quot; chapters=&quot;configuration-and-defaults&quot; functions=&quot;set&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;configuration-and-defaults&quot; functions=&quot;set&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Variable name to get setting for.&quot;&gt;
 	&lt;cfargument name=&quot;functionName&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Function name to get setting for.&quot;&gt;
 	&lt;cfscript&gt;
@@ -238,7 +238,7 @@
 		&lt;!--- The `model(&quot;author&quot;)` part of the code below gets a reference to the class in the application scope and then `findByKey` is called on it ---&gt;
 		&lt;cfset authorObject = model(&quot;author&quot;).findByKey(1)&gt;
 	'
-	categories=&quot;global&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Name of the model (class name) to get a reference to.&quot;&gt;
 	&lt;cfreturn $doubleCheckedLock(name=&quot;modelLock&quot;, condition=&quot;$cachedModelClassExists&quot;, execute=&quot;$createModelClass&quot;, conditionArgs=arguments, executeArgs=arguments)&gt;
 &lt;/cffunction&gt;
@@ -249,7 +249,7 @@
 		&lt;!--- Obfuscate the primary key value `99` ---&gt;
 		&lt;cfset newValue = obfuscateParam(99)&gt;
 	'
-	categories=&quot;global&quot; chapters=&quot;obfuscating-urls&quot; functions=&quot;deobfuscateParam&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;obfuscating-urls&quot; functions=&quot;deobfuscateParam&quot;&gt;
 	&lt;cfargument name=&quot;param&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;Value to obfuscate.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -278,7 +278,7 @@
 			&lt;!--- do something cool ---&gt;
 		&lt;/cfif&gt;
 	'
-	categories=&quot;global&quot; chapters=&quot;using-and-creating-plugins&quot; functions=&quot;&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;using-and-creating-plugins&quot; functions=&quot;&quot;&gt;
 	&lt;cfreturn StructKeyList(application.wheels.plugins)&gt;
 &lt;/cffunction&gt;
 
@@ -291,7 +291,7 @@
 		&lt;!--- Create a URL with an anchor set on it ---&gt;
 		##URLFor(action=&quot;comments&quot;, anchor=&quot;comment10&quot;)##
 	'
-	categories=&quot;global&quot; chapters=&quot;request-handling,linking-pages&quot; functions=&quot;redirectTo,linkTo,startFormTag&quot;&gt;
+	categories=&quot;global,miscellaneous&quot; chapters=&quot;request-handling,linking-pages&quot; functions=&quot;redirectTo,linkTo,startFormTag&quot;&gt;
 	&lt;cfargument name=&quot;route&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Name of a route that you have configured in `config/routes.cfm`.&quot;&gt;
 	&lt;cfargument name=&quot;controller&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Name of the controller to include in the URL.&quot;&gt;
 	&lt;cfargument name=&quot;action&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Name of the action to include in the URL.&quot;&gt;
@@ -420,7 +420,7 @@
 		&lt;!--- Capitalize a sentence, will result in &quot;Wheels is a framework&quot; ---&gt;
 		##capitalize(&quot;wheels is a framework&quot;)##
 	'
-	categories=&quot;global&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;humanize,pluralize,singularize&quot;&gt;
+	categories=&quot;global,string&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;humanize,pluralize,singularize&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Text to capitalize.&quot;&gt;
 	&lt;cfreturn UCase(Left(arguments.text, 1)) &amp; Mid(arguments.text, 2, Len(arguments.text)-1)&gt;
 &lt;/cffunction&gt;
@@ -431,7 +431,7 @@
 		&lt;!--- Humanize a string, will result in &quot;Wheels Is A Framework&quot; ---&gt;
 		##humanize(&quot;wheelsIsAFramework&quot;)##
 	'
-	categories=&quot;global&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,pluralize,singularize&quot;&gt;
+	categories=&quot;global,string&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,pluralize,singularize&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Text to humanize.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -451,7 +451,7 @@
 		&lt;!--- Pluralize based on the count passed in ---&gt;
 		Your search returned ##pluralize(word=&quot;person&quot;, count=users.recordCount)##
 	'
-	categories=&quot;global&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,humanize,singularize&quot;&gt;
+	categories=&quot;global,string&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,humanize,singularize&quot;&gt;
 	&lt;cfargument name=&quot;word&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The word to pluralize.&quot;&gt;
 	&lt;cfargument name=&quot;count&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;-1&quot; hint=&quot;Pluralization will occur when this value is not `1`.&quot;&gt;
 	&lt;cfargument name=&quot;returnCount&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;true&quot; hint=&quot;Will return `count` prepended to the pluralization when `true` and `count` is not `-1`.&quot;&gt;
@@ -464,14 +464,14 @@
 		&lt;!--- Singularize a word, will result in &quot;language&quot; ---&gt;
 		##singularize(&quot;languages&quot;)##
 	'
-	categories=&quot;global&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,humanize,pluralize&quot;&gt;
+	categories=&quot;global,string&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;capitalize,humanize,pluralize&quot;&gt;
 	&lt;cfargument name=&quot;word&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;String to singularize.&quot;&gt;
 	&lt;cfreturn $singularizeOrPluralize(text=arguments.word, which=&quot;singularize&quot;)&gt;
 &lt;/cffunction&gt;
 
-&lt;!--- PRIVATE GLOBAL METHODS ---&gt;
+&lt;!--- PRIVATE FUNCTIONS ---&gt;
 
-&lt;cffunction name=&quot;$singularizeOrPluralize&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
+&lt;cffunction name=&quot;$singularizeOrPluralize&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Called by singularize and pluralize to perform the conversion.&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot;&gt;
 	&lt;cfargument name=&quot;which&quot; type=&quot;string&quot; required=&quot;true&quot;&gt;
 	&lt;cfargument name=&quot;count&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;-1&quot;&gt;</diff>
      <filename>wheels/global/public.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -49,7 +49,7 @@
 		&lt;cfset anOrder = aCustomer.newOrder(shipping=params.shipping)&gt;
 	'
 	categories=&quot;model-class,create&quot; chapters=&quot;creating-records,associations&quot; functions=&quot;create,hasMany,hasOne&quot;&gt;
-	&lt;cfargument name=&quot;properties&quot; type=&quot;struct&quot; required=&quot;false&quot; default=&quot;#StructNew()#&quot; hint=&quot;The properties you want to set on the object (can also be passed in as named arguments instead).&quot;&gt;
+	&lt;cfargument name=&quot;properties&quot; type=&quot;struct&quot; required=&quot;false&quot; default=&quot;#StructNew()#&quot; hint=&quot;The properties you want to set on the object (can also be passed in as named arguments).&quot;&gt;
 	&lt;cfargument name=&quot;defaults&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.new.defaults#&quot; hint=&quot;See documentation for @save.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -401,7 +401,7 @@
 		&lt;cfset aPost = model(&quot;post&quot;).findByKey(params.postId)&gt;
 		&lt;cfset removedSuccessfully = aPost.removeAllComments()&gt;
 	'
-	categories=&quot;model-class,read&quot; chapters=&quot;updating-records,associations&quot; functions=&quot;hasMany,update,updateByKey,updateOne&quot;&gt;
+	categories=&quot;model-class,update&quot; chapters=&quot;updating-records,associations&quot; functions=&quot;hasMany,update,updateByKey,updateOne&quot;&gt;
 	&lt;cfargument name=&quot;where&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @findAll.&quot;&gt;
 	&lt;cfargument name=&quot;include&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @findAll.&quot;&gt;
 	&lt;cfargument name=&quot;properties&quot; type=&quot;struct&quot; required=&quot;false&quot; default=&quot;#StructNew()#&quot; hint=&quot;See documentation for @new.&quot;&gt;
@@ -808,34 +808,6 @@
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;key&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns the value of the primary key for the object. If you have a single primary key named `id` then `someObject.key()` is functionally equivalent to `someObject.id`. This method is more useful when you do dynamic programming and don't know the name of the primary key or when you use composite keys (in which case it's convenient to use this method to get a list of both key values returned).&quot;
-	examples=
-	'
-		&lt;!--- Get an object and then get the primary key value(s) ---&gt;
-		&lt;cfset anEmployee = model(&quot;employee&quot;).findByKey(params.key)&gt;
-		&lt;cfset val = anEmployee.key()&gt;
-	'
-	categories=&quot;model-object,miscellaneous&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;&quot;&gt;
-	&lt;cfargument name=&quot;$persisted&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot;&gt;
-	&lt;cfscript&gt;
-		var loc = {};
-		loc.returnValue = &quot;&quot;;
-		loc.iEnd = ListLen(variables.wheels.class.keys);
-		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
-		{
-			loc.property = ListGetAt(variables.wheels.class.keys, loc.i);
-			if (StructKeyExists(this, loc.property))
-			{
-				if ($persisted &amp;&amp; hasChanged(loc.property))
-					loc.returnValue = ListAppend(loc.returnValue, changedFrom(loc.property));
-				else
-					loc.returnValue = ListAppend(loc.returnValue, this[loc.property]);
-			}
-		}
-		&lt;/cfscript&gt;
-	&lt;cfreturn loc.returnValue&gt;
-&lt;/cffunction&gt;
-
 &lt;!--- PRIVATE MODEL CLASS METHODS ---&gt;
 
 &lt;!--- sql builders ---&gt;</diff>
      <filename>wheels/model/crud.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
   			&lt;cfset dataSource(&quot;users_source&quot;)&gt;
 		&lt;/cffunction&gt;
 	'
-	categories=&quot;model-initialization,general&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,property,propertyNames,table,tableName&quot;&gt;
+	categories=&quot;model-initialization,miscellaneous&quot; chapters=&quot;using-multiple-data-sources&quot; functions=&quot;&quot;&gt;
 	&lt;cfargument name=&quot;datasource&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The data source name to connect to.&quot;&gt;
 	&lt;cfargument name=&quot;username&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The username for the data source.&quot;&gt;
 	&lt;cfargument name=&quot;password&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The password for the data source.&quot;&gt;
@@ -27,7 +27,7 @@
 			&lt;cfset table(&quot;tbl_USERS&quot;)&gt;
 		&lt;/cffunction&gt;
 	'
-	categories=&quot;model-initialization,general&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,property,propertyNames,tableName&quot;&gt;
+	categories=&quot;model-initialization,miscellaneous&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,property,propertyNames,tableName&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Name of the table to map this model to.&quot;&gt;
 	&lt;cfscript&gt;
 		variables.wheels.class.tableName = arguments.name;</diff>
      <filename>wheels/model/miscellaneous.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -215,6 +215,18 @@
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
+&lt;cffunction name=&quot;$propertyValue&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns the object's value of the passed in property name. If you pass in a list of property names you will get the values back in a list as well.&quot;&gt;
+	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Name of property to get value for.&quot;&gt;
+	&lt;cfscript&gt;
+		var loc = {};
+		loc.returnValue = &quot;&quot;;
+		loc.iEnd = ListLen(arguments.name);
+		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
+			loc.returnValue = ListAppend(loc.returnValue, this[ListGetAt(arguments.name, loc.i)]);
+	&lt;/cfscript&gt;
+	&lt;cfreturn loc.returnValue&gt;
+&lt;/cffunction&gt;
+
 &lt;cffunction name=&quot;$setForeignKeyValues&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
 	&lt;cfargument name=&quot;missingMethodArguments&quot; type=&quot;struct&quot; required=&quot;true&quot;&gt;
 	&lt;cfargument name=&quot;keys&quot; type=&quot;string&quot; required=&quot;true&quot;&gt;</diff>
      <filename>wheels/model/onmissingmethod.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -1,42 +1,12 @@
-&lt;cffunction name=&quot;properties&quot; returntype=&quot;struct&quot; access=&quot;public&quot; output=&quot;false&quot;
-	hint=&quot;Returns a structure of all the properties with their names as keys and the values of the property as values.&quot;
-	example=
-	'
-		&lt;!--- Get a structure of all the properties for a given model ---&gt;
-		&lt;cfset user = model(&quot;user&quot;).new()&gt;
-		&lt;cfset user.properties()&gt;
-		
-	'		
-	categories=&quot;model-object&quot; chapters=&quot;&quot; functions=&quot;setProperties&quot;&gt;	
-	&lt;cfscript&gt;
-	var loc = {};
-	loc.returnvalue = {};
-	loc.properties = ListToArray(variables.wheels.class.propertyList);
-	loc.iEnd = ArrayLen(loc.properties);
-	for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
-	{
-		loc.property = loc.properties[loc.i];
-		loc.returnvalue[loc.property] = &quot;&quot;;
-		if(structkeyexists(this, loc.property))
-		{
-			loc.returnvalue[loc.property] = this[loc.property];
-		}
-	}
-	return loc.returnvalue;
-	&lt;/cfscript&gt;
-&lt;/cffunction&gt;
+&lt;!--- PUBLIC MODEL INITIALIZATION METHODS ---&gt;
 
-&lt;cffunction name=&quot;property&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot;
-	hint=&quot;Use this method to map an object property to either a table column with a different name than the property or to a specific SQL function. You only need to use this method when you want to override the default mapping that Wheels performs.&quot;
+&lt;cffunction name=&quot;property&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Use this method to map an object property to either a table column with a different name than the property or to a specific SQL function. You only need to use this method when you want to override the default mapping that Wheels performs.&quot;
 	examples=
 	'
-		&lt;!--- In models/User.cfc ---&gt;
-		&lt;cffunction name=&quot;init&quot;&gt;
-			&lt;!--- Tell Wheels that when we are referring to `firstName` in the CFML code it should translate to the `STR_USERS_FNAME` column when interacting with the database instead of the default (which would be the `firstname` column) ---&gt;
-  			&lt;cfset property(name=&quot;firstName&quot;, column=&quot;STR_USERS_FNAME&quot;)&gt;
-		&lt;/cffunction&gt;
+		&lt;!--- Tell Wheels that when we are referring to `firstName` in the CFML code it should translate to the `STR_USERS_FNAME` column when interacting with the database instead of the default (which would be the `firstname` column) ---&gt;
+		&lt;cfset property(name=&quot;firstName&quot;, column=&quot;STR_USERS_FNAME&quot;)&gt;
 	'
-	categories=&quot;model-initialization&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,propertyNames,table,tableName&quot;&gt;
+	categories=&quot;model-initialization,miscellaneous&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,propertyNames,table,tableName&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The name that you want to use for the column or SQL function result in the CFML code.&quot;&gt;
 	&lt;cfargument name=&quot;column&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The name of the column in the database table to map the property to.&quot;&gt;
 	&lt;cfargument name=&quot;sql&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;An SQL function to use to calculate the property value.&quot;&gt;
@@ -55,79 +25,92 @@
 	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;setProperties&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot;
-	hint=&quot;Allows you to set all the properties at once by passing in a structure with keys matching the property names.&quot;
+&lt;!--- PUBLIC MODEL CLASS METHODS ---&gt;
+
+&lt;cffunction name=&quot;propertyNames&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns a list of property names ordered by their respective column's ordinal position in the database table.&quot;
 	examples=
 	'
-		&lt;!--- update the properties of the model with the params struct containing the values of a form post ---&gt;
-		&lt;cfset user = model(&quot;user&quot;).new(params)&gt;
-		&lt;cfset user.setProperties(params)&gt;
-	'	
-	categories=&quot;model-object&quot; chapters=&quot;&quot; functions=&quot;properties&quot;&gt;
-	&lt;cfargument name=&quot;properties&quot; type=&quot;struct&quot; required=&quot;false&quot; default=&quot;#structnew()#&quot;&gt;
-	&lt;cfscript&gt;
-	var loc = {};
-	loc.properties = duplicate(arguments.properties);
-	structdelete(arguments, &quot;properties&quot;, false);
-	structappend(loc.properties, arguments, true);
-	for (loc.key in loc.properties)
-	{
-		if (ListFindNoCase(variables.wheels.class.propertyList, loc.key))
-		{
-			this[loc.key] = loc.properties[loc.key];
-		}
-	}
-	&lt;/cfscript&gt;
+		&lt;!--- Get a list of the property names in use in the user model ---&gt;
+  		&lt;cfset propNames = model(&quot;user&quot;).propertyNames()&gt;
+	'
+	categories=&quot;model-class,miscellaneous&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,property,table,tableName&quot;&gt;
+	&lt;cfreturn variables.wheels.class.propertyList&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;$propertyValue&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
-	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot;&gt;
+&lt;!--- PUBLIC MODEL OBJECT METHODS ---&gt;
+
+&lt;!--- get / set properties ---&gt;
+
+&lt;cffunction name=&quot;key&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns the value of the primary key for the object. If you have a single primary key named `id` then `someObject.key()` is functionally equivalent to `someObject.id`. This method is more useful when you do dynamic programming and don't know the name of the primary key or when you use composite keys (in which case it's convenient to use this method to get a list of both key values returned).&quot;
+	examples=
+	'
+		&lt;!--- Get an object and then get the primary key value(s) ---&gt;
+		&lt;cfset anEmployee = model(&quot;employee&quot;).findByKey(params.key)&gt;
+		&lt;cfset val = anEmployee.key()&gt;
+	'
+	categories=&quot;model-object,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;&quot;&gt;
+	&lt;cfargument name=&quot;$persisted&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
 		loc.returnValue = &quot;&quot;;
-		loc.iEnd = ListLen(arguments.name);
+		loc.iEnd = ListLen(variables.wheels.class.keys);
 		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
 		{
-			loc.returnValue = ListAppend(loc.returnValue, this[ListGetAt(arguments.name, loc.i)]);
+			loc.property = ListGetAt(variables.wheels.class.keys, loc.i);
+			if (StructKeyExists(this, loc.property))
+			{
+				if ($persisted &amp;&amp; hasChanged(loc.property))
+					loc.returnValue = ListAppend(loc.returnValue, changedFrom(loc.property));
+				else
+					loc.returnValue = ListAppend(loc.returnValue, this[loc.property]);
+			}
 		}
-	&lt;/cfscript&gt;
+		&lt;/cfscript&gt;
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;propertyNames&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot;
-	hint=&quot;Returns a list of property names (ordered by their respective column's ordinal position in the database table).&quot;
-	examples=
-	'
-		&lt;!--- Get a list of the property names in use in the user model ---&gt;
-  		&lt;cfset propNames = model(&quot;user&quot;).propertyNames()&gt;
+&lt;cffunction name=&quot;properties&quot; returntype=&quot;struct&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns a structure of all the properties with their names as keys and the values of the property as values.&quot;
+	example=
 	'
-	categories=&quot;model-class&quot; chapters=&quot;object-relational-mapping&quot; functions=&quot;columnNames,dataSource,property,table,tableName&quot;&gt;
-	&lt;cfreturn variables.wheels.class.propertyList&gt;
-&lt;/cffunction&gt;
-
-
-&lt;cffunction name=&quot;$updatePersistedProperties&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
+		&lt;!--- Get a structure of all the properties for an object ---&gt;
+		&lt;cfset user = model(&quot;user&quot;).findByKey(1)&gt;
+		&lt;cfset props = user.properties()&gt;
+	'		
+	categories=&quot;model-object,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;setProperties&quot;&gt;	
 	&lt;cfscript&gt;
 		var loc = {};
-		variables.$persistedProperties = {};
-		for (loc.key in variables.wheels.class.properties)
-			if (StructKeyExists(this, loc.key))
-				variables.$persistedProperties[loc.key] = this[loc.key];
+		loc.returnValue = {};
+		loc.properties = ListToArray(variables.wheels.class.propertyList);
+		loc.iEnd = ArrayLen(loc.properties);
+		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
+		{
+			loc.property = loc.properties[loc.i];
+			loc.returnValue[loc.property] = &quot;&quot;;
+			if (StructKeyExists(this, loc.property))
+				loc.returnValue[loc.property] = this[loc.property];
+		}
 	&lt;/cfscript&gt;
+	&lt;cfreturn loc.returnValue&gt; 
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;$setDefaultValues&quot; returntype=&quot;any&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
+&lt;cffunction name=&quot;setProperties&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Allows you to set all the properties of an object at once by passing in a structure with keys matching the property names.&quot;
+	examples=
+	'
+		&lt;!--- update the properties of the object with the params struct containing the values of a form post ---&gt;
+		&lt;cfset user = model(&quot;user&quot;).findByKey(1)&gt;
+		&lt;cfset user.setProperties(params)&gt;
+	'	
+	categories=&quot;model-object,miscellaneous&quot; chapters=&quot;&quot; functions=&quot;properties&quot;&gt;
+	&lt;cfargument name=&quot;properties&quot; type=&quot;struct&quot; required=&quot;false&quot; default=&quot;#StructNew()#&quot; hint=&quot;See documentation for @new.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
-		loc.iEnd = ListLen(variables.wheels.class.propertyList);
-		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
+		loc.properties = Duplicate(arguments.properties);
+		StructDelete(arguments, &quot;properties&quot;, false);
+		StructAppend(loc.properties, arguments, true);
+		for (loc.key in loc.properties)
 		{
-			loc.iItem = ListGetAt(variables.wheels.class.propertyList, loc.i);
-			if (Len(variables.wheels.class.properties[loc.iItem].defaultValue) &amp;&amp; (!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;
-			}
+			if (ListFindNoCase(variables.wheels.class.propertyList, loc.key))
+				this[loc.key] = loc.properties[loc.key];
 		}
 	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
@@ -151,7 +134,7 @@
 			&lt;!--- Do something... ---&gt;
 		&lt;/cfif&gt;
 	'
-	categories=&quot;model-object,changes&quot; chapters=&quot;&quot; functions=&quot;allChanges,changedFrom,changedProperties&quot;&gt;
+	categories=&quot;model-object,changes&quot; chapters=&quot;dirty-records&quot; functions=&quot;allChanges,changedFrom,changedProperties&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Name of property to check for change.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -163,7 +146,6 @@
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
-
 &lt;cffunction name=&quot;changedProperties&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns a list of the object properties that have been changed but not yet saved to the database.&quot;
 	examples=
 	'
@@ -173,7 +155,7 @@
 		&lt;cfset member.email = params.newEmail&gt;
 		&lt;cfset changes = member.changedProperties()&gt;
 	'
-	categories=&quot;model-object,changes&quot; chapters=&quot;&quot; functions=&quot;allChanges,changedFrom,hasChanged&quot;&gt;
+	categories=&quot;model-object,changes&quot; chapters=&quot;dirty-records&quot; functions=&quot;allChanges,changedFrom,hasChanged&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
 		loc.returnValue = &quot;&quot;;
@@ -184,7 +166,6 @@
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
-
 &lt;cffunction name=&quot;changedFrom&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns the previous value of a property that has changed. Returns an empty string if no previous value exists. Wheels will keep a note of the previous property value until the object is saved to the database.&quot;
 	examples=
 	'
@@ -198,7 +179,7 @@
 		&lt;!--- The above can also be done using a dynamic function like this ---&gt;
 		&lt;cfset oldValue = member.emailChangedFrom()&gt;
 	'
-	categories=&quot;model-object,changes&quot; chapters=&quot;&quot; functions=&quot;allChanges,changedProperties,hasChanged&quot;&gt;
+	categories=&quot;model-object,changes&quot; chapters=&quot;dirty-records&quot; functions=&quot;allChanges,changedProperties,hasChanged&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Name of property to get the previous value for.&quot;&gt;
 	&lt;cfscript&gt;
 		var returnValue = &quot;&quot;;
@@ -217,7 +198,7 @@
 		&lt;cfset member.email = params.newEmail&gt;
 		&lt;cfset allChangesAsStruct = member.allChanges()&gt;
 	'
-	categories=&quot;model-object,changes&quot; chapters=&quot;&quot; functions=&quot;changedFrom,changedProperties,hasChanged&quot;&gt;
+	categories=&quot;model-object,changes&quot; chapters=&quot;dirty-records&quot; functions=&quot;changedFrom,changedProperties,hasChanged&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
 		loc.returnValue = {};
@@ -238,4 +219,32 @@
 		}
 	&lt;/cfscript&gt;
 	&lt;cfreturn loc.returnValue&gt;
+&lt;/cffunction&gt;
+
+&lt;!--- PRIVATE MODEL OBJECT METHODS ---&gt;
+
+&lt;cffunction name=&quot;$updatePersistedProperties&quot; returntype=&quot;void&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
+	&lt;cfscript&gt;
+		var loc = {};
+		variables.$persistedProperties = {};
+		for (loc.key in variables.wheels.class.properties)
+			if (StructKeyExists(this, loc.key))
+				variables.$persistedProperties[loc.key] = this[loc.key];
+	&lt;/cfscript&gt;
+&lt;/cffunction&gt;
+
+&lt;cffunction name=&quot;$setDefaultValues&quot; returntype=&quot;any&quot; access=&quot;public&quot; output=&quot;false&quot;&gt;
+	&lt;cfscript&gt;
+		var loc = {};
+		loc.iEnd = ListLen(variables.wheels.class.propertyList);
+		for (loc.i=1; loc.i &lt;= loc.iEnd; loc.i++)
+		{
+			loc.iItem = ListGetAt(variables.wheels.class.propertyList, loc.i);
+			if (Len(variables.wheels.class.properties[loc.iItem].defaultValue) &amp;&amp; (!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;
+			}
+		}
+	&lt;/cfscript&gt;
 &lt;/cffunction&gt;
\ No newline at end of file</diff>
      <filename>wheels/model/properties.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -233,7 +233,7 @@
 			&lt;!--- Do something here ---&gt;
 		&lt;/cfif&gt;
 	'
-	categories=&quot;model-object&quot; chapters=&quot;object-validation&quot; functions=&quot;&quot;&gt;
+	categories=&quot;model-object,errors&quot; chapters=&quot;object-validation&quot; functions=&quot;&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
 		loc.returnValue = false;</diff>
      <filename>wheels/model/validations.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 		&lt;/body&gt;
 		&lt;/html&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;using-layouts&quot;&gt;
+	categories=&quot;view-helper,content&quot; chapters=&quot;using-layouts&quot;&gt;
 	&lt;cfreturn request.wheels.contentForLayout&gt;
 &lt;/cffunction&gt;
 
@@ -31,9 +31,9 @@
 		&lt;cfoutput&gt;##includePartial(partial=&quot;/shared/button&quot;)##&lt;/cfoutput&gt;
 		-&gt; Wheels will include the file &quot;views/shared/_button.cfm&quot;.
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;pages,partials&quot; functions=&quot;renderPartial&quot;&gt;
+	categories=&quot;view-helper,content&quot; chapters=&quot;pages,partials&quot; functions=&quot;renderPartial&quot;&gt;
 	&lt;cfargument name=&quot;partial&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @renderPartial.&quot;&gt;
-	&lt;cfargument name=&quot;group&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;field to group the query by. A new query will be passed into the partial template for you to iterate over.&quot;&gt;
+	&lt;cfargument name=&quot;group&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Field to group the query by. A new query will be passed into the partial template for you to iterate over.&quot;&gt;
 	&lt;cfargument name=&quot;cache&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @renderPartial.&quot;&gt;
 	&lt;cfargument name=&quot;layout&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.includePartial.layout#&quot; hint=&quot;See documentation for @renderPartial.&quot;&gt;
 	&lt;cfargument name=&quot;spacer&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;HTML or string to place between partials when called using a query.&quot;&gt;</diff>
      <filename>wheels/view/content.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
 	&lt;cfset rightNow = Now()&gt;
 	&lt;cfoutput&gt;##distanceOfTimeInWords(aWhileAgo, rightNow)##&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;timeAgoInWords,timeUntilInWords&quot;&gt;
+	categories=&quot;view-helper,dates&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;timeAgoInWords,timeUntilInWords&quot;&gt;
 	&lt;cfargument name=&quot;fromTime&quot; type=&quot;date&quot; required=&quot;true&quot; hint=&quot;Date to compare from.&quot;&gt;
 	&lt;cfargument name=&quot;toTime&quot; type=&quot;date&quot; required=&quot;true&quot; hint=&quot;Date to compare to.&quot;&gt;
 	&lt;cfargument name=&quot;includeSeconds&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.distanceOfTimeInWords.includeSeconds#&quot; hint=&quot;Whether or not to include the number of seconds in the returned string.&quot;&gt;
@@ -85,7 +85,7 @@
 		&lt;cfset aWhileAgo = Now() - 30&gt;
 		&lt;cfoutput&gt;##timeAgoInWords(aWhileAgo)##&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;distanceOfTimeInWords,timeUntilInWords&quot;&gt;
+	categories=&quot;view-helper,dates&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;distanceOfTimeInWords,timeUntilInWords&quot;&gt;
 	&lt;cfargument name=&quot;fromTime&quot; type=&quot;date&quot; required=&quot;true&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;
 	&lt;cfargument name=&quot;includeSeconds&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.timeAgoInWords.includeSeconds#&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;
 	&lt;cfargument name=&quot;toTime&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#now()#&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;
@@ -97,7 +97,7 @@
 		&lt;cfset aLittleAhead = Now() + 30&gt;
 		&lt;cfoutput&gt;##timeUntilInWords(aLittleAhead)##&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;timeAgoInWords,distanceOfTimeInWords.&quot;&gt;
+	categories=&quot;view-helper,dates&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;timeAgoInWords,distanceOfTimeInWords.&quot;&gt;
 	&lt;cfargument name=&quot;toTime&quot; type=&quot;date&quot; required=&quot;true&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;
 	&lt;cfargument name=&quot;includeSeconds&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.timeUntilInWords.includeSeconds#&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;
 	&lt;cfargument name=&quot;fromTime&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#now()#&quot; hint=&quot;See documentation for @distanceOfTimeInWords.&quot;&gt;</diff>
      <filename>wheels/view/dates.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		    ##errorMessageFor(objectName=&quot;user&quot;)##
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;errorMessagesOn&quot;&gt;
+	categories=&quot;view-helper,errors&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;errorMessagesOn&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The variable name of the object to display error messages for.&quot;&gt;
 	&lt;cfargument name=&quot;class&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.errorMessagesFor.class#&quot; hint=&quot;CSS class to set on the `ul` element.&quot;&gt;
 	&lt;cfargument name=&quot;showDuplicates&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.errorMessagesFor.showDuplicates#&quot; hint=&quot;Whether to show duplicate error messages.&quot;&gt;
@@ -51,7 +51,7 @@
 	    ##errorMessageFor(objectName=&quot;user&quot;, property=&quot;email&quot;)##
 	&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;errorMessagesOn&quot;&gt;
+	categories=&quot;view-helper,errors&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;errorMessagesOn&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The variable name of the object to display the error message for.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The name of the property to display the error message for.&quot;&gt;
 	&lt;cfargument name=&quot;prependText&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.errorMessageOn.prependText#&quot; hint=&quot;String to prepend to the error message.&quot;&gt;</diff>
      <filename>wheels/view/errors.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@
 		    ##endFormTag()##
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfscript&gt;
 		if (StructKeyExists(request.wheels, &quot;currentFormMethod&quot;))
 			StructDelete(request.wheels, &quot;currentFormMethod&quot;);
@@ -26,7 +26,7 @@
 		    ##endFormTag()##
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;method&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.startFormTag.method#&quot; hint=&quot;The type of method to use in the form tag, `get` and `post` are the options.&quot;&gt;
 	&lt;cfargument name=&quot;multipart&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.startFormTag.multipart#&quot; hint=&quot;Set to `true` if the form should be able to upload files.&quot;&gt;
 	&lt;cfargument name=&quot;spamProtection&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.startFormTag.spamProtection#&quot; hint=&quot;Set to `true` to protect the form against spammers (done with JavaScript).&quot;&gt;
@@ -87,7 +87,7 @@
 		    ##endFormTag()##
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.submitTag.value#&quot; hint=&quot;Message to display in the button form control.&quot;&gt;
 	&lt;cfargument name=&quot;image&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.submitTag.image#&quot; hint=&quot;File name of the image file to use in the button form control.&quot;&gt;
 	&lt;cfargument name=&quot;disable&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.submitTag.disable#&quot; hint=&quot;Whether to disable the button upon clicking (prevents double-clicking).&quot;&gt;</diff>
      <filename>wheels/view/forms.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		  &lt;p&gt;##dateSelect(objectName=&quot;user&quot;, property=&quot;dateOfBirth&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,submitTag,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,submitTag,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;order&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateSelect.order#&quot; hint=&quot;Use to change the order of or exclude date select tags.&quot;&gt;
@@ -37,7 +37,7 @@
 		    &lt;p&gt;##timeSelect(objectName=&quot;business&quot;, property=&quot;openUntil&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;order&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.timeSelect.order#&quot; hint=&quot;Use to change the order of or exclude time select tags.&quot;&gt;
@@ -66,7 +66,7 @@
 		    &lt;p&gt;##dateTimeSelect(objectName=&quot;article&quot;, property=&quot;publishedAt&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;dateOrder&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateTimeSelect.dateOrder#&quot; hint=&quot;See documentation for @dateSelect.&quot;&gt;</diff>
      <filename>wheels/view/formsdateobject.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		    &lt;p&gt;##dateSelectTags()##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textFieldTag,submitTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textFieldTag,submitTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Now()#&quot; hint=&quot;See documentation for @selectTag.&quot;&gt;
 	&lt;cfargument name=&quot;order&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateSelectTags.order#&quot; hint=&quot;See documentation for @dateSelect.&quot;&gt;
@@ -40,7 +40,7 @@
 		    &lt;p&gt;##timeSelectTags(name=&quot;timeOfMeeting&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Now()#&quot; hint=&quot;See documentation for @selectTag.&quot;&gt;
 	&lt;cfargument name=&quot;order&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.timeSelectTags.order#&quot; hint=&quot;See documentation for @timeSelect.&quot;&gt;
@@ -72,7 +72,7 @@
 		    &lt;p&gt;##dateTimeSelectTags()##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;dateOrder&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateTimeSelectTags.dateOrder#&quot; hint=&quot;See documentation for @dateTimeSelect.&quot;&gt;
 	&lt;cfargument name=&quot;dateSeparator&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateTimeSelectTags.dateSeparator#&quot; hint=&quot;See documentation for @dateTimeSelect.&quot;&gt;
 	&lt;cfargument name=&quot;startYear&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.dateTimeSelectTags.startYear#&quot; hint=&quot;See documentation for @dateTimeSelect.&quot;&gt;
@@ -118,7 +118,7 @@
 		    &lt;p&gt;##yearSelectTag(name=&quot;yearOfBirthday&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Year(Now())#&quot; hint=&quot;The year that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;startYear&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.yearSelectTag.startYear#&quot; hint=&quot;See documentation for @dateSelect.&quot;&gt;
@@ -145,7 +145,7 @@
 		    &lt;p&gt;##monthSelectTag(name=&quot;monthOfBirthday&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Month(Now())#&quot; hint=&quot;The month that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;monthDisplay&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.monthSelectTag.monthDisplay#&quot; hint=&quot;See documentation for @dateSelect.&quot;&gt;
@@ -171,7 +171,7 @@
 		    &lt;p&gt;##daySelectTag(name=&quot;dayOfWeek&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Day(Now())#&quot; hint=&quot;The day that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;includeBlank&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.daySelectTag.includeBlank#&quot; hint=&quot;See documentation for @select.&quot;&gt;
@@ -196,7 +196,7 @@
 		    &lt;p&gt;##hourSelectTag(name=&quot;hourOfMeeting&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Hour(Now())#&quot; hint=&quot;The hour that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;includeBlank&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.hourSelectTag.includeBlank#&quot; hint=&quot;See documentation for @select.&quot;&gt;
@@ -221,7 +221,7 @@
 		    &lt;p&gt;##minuteSelectTag(name=&quot;minuteOfMeeting&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Minute(Now())#&quot; hint=&quot;The minute that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;minuteStep&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.minuteSelectTag.minuteStep#&quot; hint=&quot;See documentation for @timeSelect.&quot;&gt;
@@ -247,7 +247,7 @@
 		    &lt;p&gt;##secondSelectTag(name=&quot;secondsToLaunch&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;date&quot; required=&quot;false&quot; default=&quot;#Second(Now())#&quot; hint=&quot;The second that should be selected initially.&quot;&gt;
 	&lt;cfargument name=&quot;includeBlank&quot; type=&quot;any&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.secondSelectTag.includeBlank#&quot; hint=&quot;See documentation for @select.&quot;&gt;</diff>
      <filename>wheels/view/formsdateplain.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		    &lt;p&gt;##textField(label=&quot;First Name&quot;, objectName=&quot;user&quot;, property=&quot;firstName&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;The variable name of the object to build the form control for.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The name of the property to use in the form control.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.textField.label#&quot; hint=&quot;The label text to use in the form control.&quot;&gt;
@@ -39,7 +39,7 @@
 		    &lt;p&gt;##passwordField(objectName=&quot;user&quot;, property=&quot;pass&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapter=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapter=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.passwordField.label#&quot; hint=&quot;See documentation for textField&quot;&gt;
@@ -72,7 +72,7 @@
 		    &lt;p&gt;##hiddenField(objectName=&quot;user&quot;, property=&quot;id&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfscript&gt;
@@ -98,7 +98,7 @@
 		    &lt;p&gt;##fileField(objectName=&quot;photo&quot;, property=&quot;imageFile&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.fileField.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -130,7 +130,7 @@
 		  &lt;p&gt;##textArea(objectName=&quot;article&quot;, property=&quot;overview&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.textArea.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -165,7 +165,7 @@
 			&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,submitTag,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,textField,submitTag,checkBox,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;tagValue&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The value of the radio button when `selected`.&quot;&gt;
@@ -203,7 +203,7 @@
 		    &lt;p&gt;##checkBox(objectName=&quot;photo&quot;, property=&quot;isPublic&quot;, label=&quot;Display this photo publicly.&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,passwordField,hiddenField,textArea,fileField,select,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;checkedValue&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.checkBox.checkedValue#&quot; hint=&quot;The value of the check box when it's on the `checked` state.&quot;&gt;
@@ -253,7 +253,7 @@
 		    &lt;p&gt;##select(objectName=&quot;book&quot;, property=&quot;authorId&quot;, options=authors)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
+	categories=&quot;view-helper,forms-object&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textField,radioButton,checkBox,passwordField,hiddenField,textArea,fileField,dateTimeSelect,dateSelect,timeSelect&quot;&gt;
 	&lt;cfargument name=&quot;objectName&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;property&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;options&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;A collection to populate the select form control with. Can be a query recordset or an array of objects.&quot;&gt;</diff>
      <filename>wheels/view/formsobject.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		    &lt;p&gt;##textFieldTag(name=&quot;someName&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Name to populate in tag's `name` attribute.&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Value to populate in tag's `value` attribute.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.textFieldTag.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -35,7 +35,7 @@
 		    &lt;p&gt;##passwordFieldTag(name=&quot;password&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.passwordFieldTag.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -64,7 +64,7 @@
 		    &lt;p&gt;##hiddenFieldTag(name=&quot;userId&quot;, value=user.id)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfscript&gt;
@@ -87,7 +87,7 @@
 		    &lt;p&gt;##fileFieldTag(name=&quot;photo&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.fileFieldTag.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
 	&lt;cfargument name=&quot;labelPlacement&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.fileFieldTag.labelPlacement#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -114,7 +114,7 @@
 		  &lt;p&gt;##textAreaTag(name=&quot;description&quot;)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;content&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Content to display in `textarea` by default.&quot;&gt;
 	&lt;cfargument name=&quot;label&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.textAreaTag.label#&quot; hint=&quot;See documentation for @textField.&quot;&gt;
@@ -146,7 +146,7 @@
 			&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;checked&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot; hint=&quot;Whether or not to check the radio button by default.&quot;&gt;
@@ -186,7 +186,7 @@
 		    &lt;p&gt;##checkBoxTag(name=&quot;suscribe&quot;, value=&quot;true&quot;, label=&quot;Suscribe to our newsletter&quot;, checked=false)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTag,dateSelectTag,timeSelectTag&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,selectTag,dateTimeSelectTag,dateSelectTag,timeSelectTag&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;checked&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;false&quot; hint=&quot;Whether or not the check box should be checked by default.&quot;&gt;
 	&lt;cfargument name=&quot;value&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.checkBoxTag.value#&quot; hint=&quot;Value of check box in its `checked` state.&quot;&gt;
@@ -224,7 +224,7 @@
 		    &lt;p&gt;##selectTag(name=&quot;cityId&quot;, options=cities)##&lt;/p&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
+	categories=&quot;view-helper,forms-plain&quot; chapters=&quot;form-helpers-and-showing-errors&quot; functions=&quot;URLFor,startFormTag,endFormTag,submitTag,textFieldTag,radioButtonTag,checkBoxTag,passwordFieldTag,hiddenFieldTag,textAreaTag,fileFieldTag,dateTimeSelectTags,dateSelectTags,timeSelectTags&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;options&quot; type=&quot;any&quot; required=&quot;true&quot; hint=&quot;See documentation for @textFieldTag.&quot;&gt;
 	&lt;cfargument name=&quot;selected&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Value of option that should be selected by default.&quot;&gt;</diff>
      <filename>wheels/view/formsplain.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 		    ##styleSheetLinkTag(&quot;styles&quot;)##
 		&lt;/head&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;javaScriptIncludeTag,imageTag&quot;&gt;
+	categories=&quot;view-helper,media&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;javaScriptIncludeTag,imageTag&quot;&gt;
 	&lt;cfargument name=&quot;sources&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The name of one or many CSS files in the `stylesheets` folder, minus the `.css` extension. (Can also be called with the `source` argument).&quot;&gt;
 	&lt;cfargument name=&quot;type&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.styleSheetLinkTag.type#&quot; hint=&quot;The `type` attribute for the `link` tag.&quot;&gt;
 	&lt;cfargument name=&quot;media&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.styleSheetLinkTag.media#&quot; hint=&quot;The `media` attribute for the `link` tag.&quot;&gt;
@@ -38,7 +38,7 @@
 		    ##javaScriptIncludeTag(&quot;main&quot;)##
 		&lt;/head&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;styleSheetLinkTag,imageTag&quot;&gt;
+	categories=&quot;view-helper,media&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;styleSheetLinkTag,imageTag&quot;&gt;
 	&lt;cfargument name=&quot;sources&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The name of one or many JavaScript files in the `javascripts` folder, minus the `.js` extension. (Can also be called with the `source` argument).&quot;&gt;
 	&lt;cfargument name=&quot;type&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.javaScriptIncludeTag.type#&quot; hint=&quot;The `type` attribute for the `script` tag.&quot;&gt;
 	&lt;cfscript&gt;
@@ -65,7 +65,7 @@
 	'
 		##imageTag(&quot;logo.png&quot;)##
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;javaScriptIncludeTag,styleSheetLinkTag&quot;&gt;
+	categories=&quot;view-helper,media&quot; chapters=&quot;miscellaneous-helpers&quot; functions=&quot;javaScriptIncludeTag,styleSheetLinkTag&quot;&gt;
 	&lt;cfargument name=&quot;source&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Image file name if local or full URL if remote.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};</diff>
      <filename>wheels/view/media.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@
 			&lt;/div&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; functions=&quot;resetCycle&quot;&gt;
+	categories=&quot;view-helper,miscellaneous&quot; functions=&quot;resetCycle&quot;&gt;
 	&lt;cfargument name=&quot;values&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;List of values to cycle through.&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;default&quot; hint=&quot;Name to give the cycle. Useful when you use multiple cycles on a page.&quot;&gt;
 	&lt;cfscript&gt;
@@ -67,7 +67,7 @@
 			&lt;/div&gt;
 		&lt;/cfoutput&gt;
 	'
-	categories=&quot;view-helper&quot; functions=&quot;cycle&quot;
+	categories=&quot;view-helper,miscellaneous&quot; functions=&quot;cycle&quot;
 	&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;default&quot; hint=&quot;The name of the cycle to reset.&quot;&gt;
 	&lt;cfscript&gt;</diff>
      <filename>wheels/view/miscellaneous.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@
 		##excerpt(text=&quot;ColdFusion Wheels is a Rails-like MVC framework for Adobe ColdFusion and Railo&quot;, phrase=&quot;framework&quot;, radius=5)##
 		-&gt; ... MVC framework for ...
 	'
-	categories=&quot;view-helper&quot; functions=&quot;highlight,simpleFormat,stripLinks,stripTags,titleize,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;highlight,simpleFormat,stripLinks,stripTags,titleize,truncate&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The text to extract an excerpt from.&quot;&gt;
 	&lt;cfargument name=&quot;phrase&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The phrase to extract.&quot;&gt;
 	&lt;cfargument name=&quot;radius&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;100&quot; hint=&quot;Number of characters to extract surrounding the phrase.&quot;&gt;
@@ -50,7 +50,7 @@
 		##highlight(text=&quot;You searched for: Wheels&quot;, phrases=&quot;Wheels&quot;)##
 		-&gt; You searched for: &lt;span class=&quot;highlight&quot;&gt;Wheels&lt;/span&gt;
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,simpleFormat,stripLinks,stripTags,titleize,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,simpleFormat,stripLinks,stripTags,titleize,truncate&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;Text to search.&quot;&gt;
 	&lt;cfargument name=&quot;phrases&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;List of phrases to highlight.&quot;&gt;
 	&lt;cfargument name=&quot;class&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;highlight&quot; hint=&quot;Class to use in `span` tags surrounding highlighted phrase(s).&quot;&gt;
@@ -113,7 +113,7 @@
 			   * Awesome
 		   &lt;/p&gt;
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,highlight,stripLinks,stripTags,titleize,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,highlight,stripLinks,stripTags,titleize,truncate&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The text to format.&quot;&gt;
 	&lt;cfargument name=&quot;wrap&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;true&quot; hint=&quot;Set to `true` to wrap the result in a paragraph.&quot;&gt;
 	&lt;cfscript&gt;
@@ -134,7 +134,7 @@
 		##stripLinks(&quot;&lt;strong&gt;Wheels&lt;/strong&gt; is a framework for &lt;a href=&quot;http://www.adobe.com/products/coldfusion/&quot;&gt;ColdFusion&lt;/a&gt;.&quot;)##
 		-&gt; &lt;strong&gt;Wheels&lt;/strong&gt; is a framework for ColdFusion.
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,highlight,simpleFormat,stripTags,titleize,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,highlight,simpleFormat,stripTags,titleize,truncate&quot;&gt;
 	&lt;cfargument name=&quot;html&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The html to remove links from.&quot;&gt;
 	&lt;cfreturn REReplaceNoCase(arguments.html, &quot;&lt;a.*?&gt;(.*?)&lt;/a&gt;&quot;, &quot;\1&quot; , &quot;all&quot;)&gt;
 &lt;/cffunction&gt;
@@ -145,7 +145,7 @@
 		##stripTags(&quot;&lt;strong&gt;Wheels&lt;/strong&gt; is a framework for &lt;a href=&quot;http://www.adobe.com/products/coldfusion/&quot;&gt;ColdFusion&lt;/a&gt;.&quot;)##
 		-&gt; Wheels is a framework for ColdFusion.
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,titleize,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,titleize,truncate&quot;&gt;
 	&lt;cfargument name=&quot;html&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The HTML to remove links from.&quot;&gt;
 	&lt;cfset var returnValue = &quot;&quot;&gt;
 	&lt;cfset returnValue = REReplaceNoCase(arguments.html, &quot;&lt;\ *[a-z].*?&gt;&quot;, &quot;&quot;, &quot;all&quot;)&gt;
@@ -159,7 +159,7 @@
 		##titleize(&quot;Wheels is a framework for ColdFusion&quot;)##
 		-&gt; Wheels Is A Framework For ColdFusion
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,stripTags,truncate&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,stripTags,truncate&quot;&gt;
 	&lt;cfargument name=&quot;word&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The text to turn into a title.&quot;&gt;
 	&lt;cfscript&gt;
 		var loc = {};
@@ -182,7 +182,7 @@
 		##truncate(text=&quot;Wheels is a framework for ColdFusion&quot;, truncateString=&quot; (more)&quot;)##
 		-&gt; Wheels is a framework f (more)
 	'
-	categories=&quot;view-helper&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,stripTags,titleize&quot;&gt;
+	categories=&quot;view-helper,text&quot; functions=&quot;excerpt,highlight,simpleFormat,stripLinks,stripTags,titleize&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The text to truncate.&quot;&gt;
 	&lt;cfargument name=&quot;length&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;30&quot; hint=&quot;Length to truncate the text to.&quot;&gt;
 	&lt;cfargument name=&quot;truncateString&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;...&quot; hint=&quot;String to replace the last characters with.&quot;&gt;</diff>
      <filename>wheels/view/text.cfm</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,7 @@
 		##linkTo(text=&quot;Joe''s Profile&quot;, route=&quot;userProfile&quot;, userName=&quot;joe&quot;)##
 		-&gt; &lt;a href=&quot;/user/joe&quot;&gt;Joe''s Profile&lt;/a&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;linking-pages&quot; functions=&quot;URLFor,buttonTo,mailTo&quot;&gt;
+	categories=&quot;view-helper,links&quot; chapters=&quot;linking-pages&quot; functions=&quot;URLFor,buttonTo,mailTo&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;The text content of the link.&quot;&gt;
 	&lt;cfargument name=&quot;confirm&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;Pass a message here to cause a JavaScript confirmation dialog box to pop up containing the message.&quot;&gt;
 	&lt;cfargument name=&quot;route&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;See documentation for @URLFor.&quot;&gt;
@@ -56,7 +56,7 @@
 	'
 		##buttonTo(text=&quot;Delete Account&quot;, action=&quot;perFormDelete&quot;, disabled=&quot;Wait...&quot;)##
 	'
-	categories=&quot;view-helper&quot; functions=&quot;URLFor,linkTo,mailTo&quot;&gt;
+	categories=&quot;view-helper,links&quot; functions=&quot;URLFor,linkTo,mailTo&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.buttonTo.text#&quot; hint=&quot;The text content of the button.&quot;&gt;
 	&lt;cfargument name=&quot;confirm&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.buttonTo.confirm#&quot; hint=&quot;See documentation for @linkTo.&quot;&gt;
 	&lt;cfargument name=&quot;image&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.buttonTo.image#&quot; hint=&quot;If you want to use an image for the button pass in the link to it here (relative from the `images` folder).&quot;&gt;
@@ -97,7 +97,7 @@
 		##mailTo(emailAddress=&quot;webmaster@yourdomain.com&quot;, name=&quot;Contact our Webmaster&quot;)##
 		-&gt; &lt;a href=&quot;mailto:webmaster@yourdomain.com&quot;&gt;Contact our Webmaster&lt;/a&gt;
 	'
-	categories=&quot;view-helper&quot; functions=&quot;URLFor,linkTo,buttonTo&quot;&gt;
+	categories=&quot;view-helper,links&quot; functions=&quot;URLFor,linkTo,buttonTo&quot;&gt;
 	&lt;cfargument name=&quot;emailAddress&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The email address to link to.&quot;&gt;
 	&lt;cfargument name=&quot;name&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;&quot; hint=&quot;A string to use as the link text (&quot;&quot;Joe&quot;&quot; or &quot;&quot;Support Department&quot;&quot;, for example).&quot;&gt;
 	&lt;cfargument name=&quot;encode&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.mailTo.encode#&quot; hint=&quot;Pass `true` here to encode the email address, making it harder for bots to harvest it for example.&quot;&gt;
@@ -135,7 +135,7 @@
 		##autoLink(&quot;Email us at info@cfwheels.org&quot;)##
 		-&gt; Email us at &lt;a href=&quot;mailto:info@cfwheels.org&quot;&gt;info@cfwheels.org&lt;/a&gt;
 	'
-	categories=&quot;view-helper&quot;&gt;
+	categories=&quot;view-helper,links&quot;&gt;
 	&lt;cfargument name=&quot;text&quot; type=&quot;string&quot; required=&quot;true&quot; hint=&quot;The text to create links in.&quot;&gt;
 	&lt;cfargument name=&quot;link&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;all&quot; hint=&quot;Whether to link URLs, email addresses or both. Possible values are: `all` (default), `URLs` and `emailAddresses`.&quot;&gt;
 	&lt;cfscript&gt;
@@ -151,27 +151,6 @@
 	&lt;cfreturn loc.returnValue&gt;
 &lt;/cffunction&gt;
 
-&lt;cffunction name=&quot;pagination&quot; returntype=&quot;struct&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Returns a struct with information about the specificed paginated query. The available variables are `currentPage`, `totalPages` and `totalRecords`.&quot;
-	examples=
-	'
-		&lt;cfparam name=&quot;params.page&quot; default=&quot;1&quot;&gt;
-		&lt;cfset allAuthors = model(&quot;author&quot;).findAll(page=params.page, perPage=25, order=&quot;lastName&quot;, handle=&quot;authorsData&quot;)&gt;
-		&lt;cfset paginationData = pagination(&quot;authorsData&quot;)&gt;
-	'
-	categories=&quot;view-helper&quot;&gt;
-	&lt;cfargument name=&quot;handle&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;query&quot; hint=&quot;The handle given to the query to return pagination information for.&quot;&gt;
-	&lt;cfscript&gt;
-		if (application.wheels.showErrorInformation)
-		{
-			if (!StructKeyExists(request.wheels, arguments.handle))
-			{
-				$throw(type=&quot;Wheels.QueryHandleNotFound&quot;, message=&quot;Wheels couldn't find a query with the handle of `#arguments.handle#`.&quot;, extendedInfo=&quot;Make sure your `findAll` call has the `page` argument specified and matching `handle` argument if specified.&quot;);
-			}
-		}
-	&lt;/cfscript&gt;
-	&lt;cfreturn request.wheels[arguments.handle]&gt;
-&lt;/cffunction&gt;
-
 &lt;cffunction name=&quot;paginationLinks&quot; returntype=&quot;string&quot; access=&quot;public&quot; output=&quot;false&quot; hint=&quot;Builds and returns a string containing links to pages based on a paginated query. Uses @linkTo internally to build the link, so you need to pass in a `route` name or a `controller`/`action`/`key` combination. All other @linkTo arguments can be supplied as well, in which case they are passed through directly to @linkTo. If you have paginated more than one query in the controller, you can use the `handle` argument to reference them. (Don't forget to pass in a `handle` to the @findAll function in your controller first).&quot;
 	examples=
 	'
@@ -213,7 +192,7 @@
 		    &lt;cfoutput&gt;##paginationLinks(route=&quot;paginatedCommentListing&quot;, year=2009, month=&quot;feb&quot;, day=10)##&lt;/cfoutput&gt;
 		&lt;/ul&gt;
 	'
-	categories=&quot;view-helper&quot; chapters=&quot;getting-paginated-data,displaying-links-for-pagination&quot; functions=&quot;linkTo,findAll,URLFor&quot;&gt;
+	categories=&quot;view-helper,links&quot; chapters=&quot;getting-paginated-data,displaying-links-for-pagination&quot; functions=&quot;pagination,linkTo,findAll,URLFor&quot;&gt;
 	&lt;cfargument name=&quot;windowSize&quot; type=&quot;numeric&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.paginationLinks.windowSize#&quot; hint=&quot;The number of page links to show around the current page.&quot;&gt;
 	&lt;cfargument name=&quot;alwaysShowAnchors&quot; type=&quot;boolean&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.paginationLinks.alwaysShowAnchors#&quot; hint=&quot;Whether or not links to the first and last page should always be displayed.&quot;&gt;
 	&lt;cfargument name=&quot;anchorDivider&quot; type=&quot;string&quot; required=&quot;false&quot; default=&quot;#application.wheels.functions.paginationLinks.anchorDivider#&quot; hint=&quot;String to place next to the anchors on either side of the list.&quot;&gt;</diff>
      <filename>wheels/view/urls.cfm</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>73d240b55b37da1c669a085424dd6bf01e5be180</id>
    </parent>
  </parents>
  <author>
    <name>per.djurner</name>
    <email>per.djurner@d8ff095c-9719-0410-9cd3-1dd5d13d90f5</email>
  </author>
  <url>http://github.com/rip747/cfwheels/commit/032cfe2788ba827956742e3b21d460804465f39a</url>
  <id>032cfe2788ba827956742e3b21d460804465f39a</id>
  <committed-date>2009-11-05T02:38:32-08:00</committed-date>
  <authored-date>2009-11-05T02:38:32-08:00</authored-date>
  <message>Docs and syntax changes.

git-svn-id: https://cfwheels.googlecode.com/svn/trunk@3666 d8ff095c-9719-0410-9cd3-1dd5d13d90f5</message>
  <tree>adbdd3c7c93265c78299e63b348c206dc2059abc</tree>
  <committer>
    <name>per.djurner</name>
    <email>per.djurner@d8ff095c-9719-0410-9cd3-1dd5d13d90f5</email>
  </committer>
</commit>
