Major revision.  Declare variables moved to new member

Variable declaration now happens in a separate member.  Ideal for
tracking changes.  More difficult to work with, but ensure variable
naming conventions are followed.