closer; needs actual tests
add mock and make things testable
working on tests and fighting with mocking