wrote more tests, noticed some design changes I may wish to write up