first version of complete refactoring into a more modular system. this will hopefully ease the transition to allowing the ability to apply a function to a path
improved test coverage of refactor
Merge branch 'feature/complete_refactor' into development