customization=seldom
 friendly_name=Schedd
 usage=Where are the binaries for these daemons?
-url=http://cs.wisc.edu/condor/manual/v7.3/3_3Configuration.html#SECTION
+url=http://research.cs.wisc.edu/htcondor/manual/current/3_3Configuration.html
 tags=master,master
 id=552
 {endverbatim}
 
-The attributes that you really need to care about are *default, type, usage, friendly_name*, *url*, and *tags*. If you can predict *customization* and *reconfig*, which take values =seldom=, =often=, =always=, and =true= on a reconfig, =false= otherwise, respectively, then fill that in as well. The others can be held constant when you make a new entry by copying the snippet above and changing it. Please make sure the above entries are defined. For *url* just leave it be the example set forth above.
+{subsection: Required fields}
 
-*range*, for type=int and type=double is a pair of comma separated values indicating the minimum and maximum allowed values.  You can omit the second number to indicate INT_MAX or DBL_MAX respectively.
+The parameter name in square brackets marks the beginning of an entry.
 
-The machinery which uses the above information is not yet complete, this is why things like the *id* field can be left as it is among the other things. Also, *no extraneous whitespace*. You've been warned.
+*: *type* - The type.  Valid values are: bool, double, int, long, path, string
 
-Be aware that the default is internally implemented as a string, so if you enter double numbers or what not for those types of params that are, you may lose precision when it passed through the strtod() function. Also, there are no interpolations or substitutions in the default. What you see is exactly what you get. This includes trailing spaces.
+{subsection: Strongly recommended fields}
+
+The attributes that you really need to care about are *default, type, usage, friendly_name*, *url*, and *tags*.
+
+*: *default* - The default value. (ex. $(SBIN)/condor_master, 10, false)
+
+*: *friendly_name* - A more human friendly version of the parameter name.  May just be the parameter name with underscores changed to spaces and in mixed case. (ex. Filesystem Domain)
+
+*: *usage* - Brief information on how to set the paramter. (ex. to specify that each machine has its own file system, Log files) (The current entries are wildly inconsistent.
+
+*: *url* - Link to the matching documentation in the manual.  You can leave this as the default pointing to the general configuration section.
+
+*: *tags* - Comma separated (NO SPACES) list of tags to identify the setting. If the setting is only relevant for a particular program or daemon, list that daemon here, minus any condor_ prefix (ex. schedd, submit).
+
+If you can predict *customization* and *reconfig*, which take values =seldom=, =often=, =always=, and =true= on a reconfig, =false= otherwise, respectively, then fill that in as well. The others can be held constant when you make a new entry by copying the snippet above and changing it. Please make sure the above entries are defined. For *url* just leave it be the example set forth above.
+
+{subsection: Optional fields}
+
+*: *range* - for type=int and type=double is a pair of comma separated values indicating the minimum and maximum allowed values.  You can omit the second number to indicate INT_MAX or DBL_MAX respectively. (ex range=.*; range=1024,; range=1,1000000000) (<- TODO ".*" suggests regular expressions are allowed?)
 
-Now, there are some restrictions to what kind of param var you can add with the current system. These restrictions will be lifted in the future as more and more of the implementation of this feature set comes online.
+*: *aliases* - List(?) of other parameter names which are essentially identical to this use, generally used for backward compatibility. (ex aliases=GROUP_DYNAMIC_MACH_CONSTRAINT)
+
+*: *id* - Unused? (TODO). Just copy it from the template for now.
+
+*: *state* - TODO No idea.  Exclusively used as "state=default" for now.
+
+*: *is_macro* - TODO overwhelmingly is_macro=false, but a few set it to true.
+
+*: *reconfig* - true or false. (TODO: check) If true, the value can be changed with condor_reconfig; otherwise it will only be respected on daemon restart.
+
+{subsection: Further discussion}
+
+The machinery which uses the above information is not yet complete, this is why things like the *id* field can be left as it is among the other things.
+
+*No extraneous whitespace*. You've been warned.
+
+Be aware that the default is internally implemented as a string, so if you enter double numbers or what not for those types of params that are, you may lose precision when it passed through the strtod() function. Also, there are no interpolations or substitutions in the default. What you see is exactly what you get. This includes trailing spaces.
 
 You may *NOT* add variables that:
 1: requires a runtime, or nonimmediate, default, like =NUM_CPUS=. You *CAN* however, make a default which is an expression based upon another configuration file parameter.
-1: follow a pattern like *_FOOBAR that you cannot specify all cases to. (You'd write A_FOOBAR, B_FOOBAR, C_FOOBAR as individual cases of the above snippet).
+1: follow a pattern like *_FOOBAR that you cannot specify all cases to. (You'd write A_FOOBAR, B_FOOBAR, C_FOOBAR as individual cases of the above snippet). (<- TODO: Does this work at all?)
 
 Currently, the =param()= system does not =EXCEPT= when an entry is not in the default table. It is our hope and dream that one day all of our entries will be in the default table and =EXCEPT= will be the default case. Of course, there is an interface into param() which doesn't except no matter what, to implement those features which param() things at runtime picked out of another config file entry.
 
-I know this isn't as cool as it could be, nor flexible. But once I get the next version of the param_info.in file finished that uses a *much* better syntax, and allows pattern variables and runtime defaults things will become much more sane. This feature (#123) is still in flux.
-
 {subsection: Things to Note!}
 
 1: For entries in the default table, the hard coded defaults in the source code are ignored. If the variable is not in the table, the in code defaults are utilized.