Refactor

The current state of refactor is the best functional branch.  Recommend pulling into the praxes master at this point and tagging.