About to refactor into subdirs to add unit tests