code now compiles and passes unit tests.  but not fully awesome