Refactoring - a major restructuring

A major refactoring to include organization of methods, normalization of variable names (though not yet complete), and documentation.

attn: @jamesvanmil, @kevinreiss, @jpstroop, @nomadicoder