feature complete. need to refactor a couple things, and build up the test app