get unit tests passing
get unit tests passing, refactor