poking around at some stuff, trying out a new design
first stab at refactorization! cleanup needed, all tests are passing though