added guard configuration and updated the coverage reports to go to the build directory #5
major refactoring of public api per #5 and updating the tests to match