worked through unit tests