starting to change file around, refactor, non-running version currently
large refactoring, adding docs and larger set of tests