i got most of the tests written - no time for most of the code sadly