compiles well
tests: added; refactored; draft