tests passing and it works, next up: refactoring