diff --git a/tconfpy.3 b/tconfpy.3
index 1a71ed8..cd8b8b5 100644
--- a/tconfpy.3
+++ b/tconfpy.3
@@ -972,10 +972,21 @@
 undefined/non-existent variable.  This generates an error.
 
 .IP \(bu 4
-Unless a variable as been marked as "Read Only" by the program,
-you can continue to change its value as you go.  Simply adding
-another line at the end of our example above will change the value
-of \'Greeting\' to something new:
+The variable \'Greeting\' now contains the
+.B string
+"Hello Mr. Tconfpy, you look great for someone 101!"   This is true even
+if variable \'MYAGE\' has been defined by the calling program to be
+an integer type.  To repeat a previously-made point:  All variable substitution
+and comparison operations in a configuration file are done with
+.B strings
+regardless of the actual type of the variables involved.
+
+
+.IP \(bu 4
+Unless a variable as been marked as "Read Only" by the application
+program, you can continue to change its value as you go.  Simply
+adding another line at the end of our example above will change the
+value of \'Greeting\' to something new:
 
 .nf
     Greeting = Generic Greeting Message
@@ -988,16 +999,81 @@
 particular application.  You can then selectively override the
 variables you want to change in your own configuration file.
 
-.IP \(bu 4
-The variable \'Greeting\' now contains the
-.B string
-"Hello Mr. Tconfpy, you look great for someone 101!"   This is true even
-if variable \'MYAGE\' has been defined by the calling program to be
-an integer type.  To repeat a previously-made point:  All variable substitution
-and comparison operations in a configuration file are done with
-.B strings
-regardless of the actual type of the variables involved.
+.SS Indirect Variable Assignment
 
+The dereferencing of a variable's value can take place on either
+the right- or
+.B left-hand-side
+of an assignment statement.  This means so-called "indirect"
+variable assignments are permitted:
+
+.nf
+     CurrentTask    = HouseCleaning
+     [CurrentTask]  = Dad
+.fi
+
+To understand what this does you need to realize that before
+\*(TC does anything with a statement in a configuration file, it
+replaces every variable reference with its associated value
+(or produces an error for references to non-existent variables).
+So the second statement above is first converted to:
+
+.nf
+    HouseCleaning = Dad
+.fi
+
+i.e., The value \'Dad\' is assigned to a (new) variable called
+\'HouseCleaning\'.  In other words, putting a variable reference
+on the left-hand-side of an assignment like this allows you
+to access another variable which is named "indirectly".  You have
+to be careful when doing this, though.  Consider a similar, but
+slightly different example:
+
+.nf
+     CurrentTask    = House Cleaning   # This is fine
+     [CurrentTask]  = Dad              # Bad!
+.fi
+
+The reason this no longer works is that the indirect
+reference causes the second line to parse to:
+
+.nf
+    House Cleaning = Dad
+.fi
+
+This is illegal because whitespace is not permitted in variable names.
+\*(TC will produce an error if it sees such a construct.
+
+If you get into the habit of reading \'[something]\' as,
+"The current value of \'something\'" this whole area of variable
+naming and referencing will be easier to keep clear in your
+thinking.  See if you understand what the following does
+(if you don't, try it out with \'test-tc.py\'):
+
+.nf
+    foo   = 1  
+    bar   = 2
+    [foo] = bar
+    [bar] = [foo]
+.fi
+
+You can get pretty creative with this since variable references
+can occur pretty much anywhere in an assignment statement.
+The only place they cannot appear is
+.B within
+another variable reference.  That is, you cannot "nest" references:
+
+.nf
+    # The Following Is Fine
+
+    FOO          = Goodness
+    BAR          = Me
+    Oh[FOO][BAR] = Goodness Gracious Me!
+
+    # But This Does NOT Do What You Might Think
+
+    [FOO[BAR]] = Something Or Other  # Avoid nested constructs like this!
+.fi
 
 .SS Lexical Namespaces