moved over unit tests, stubbed out public API implementation