continuing to refactor, but pushing so that others can work on it as well.  Branch is currently very broken