refactor, making tests pass. more to come
refactored, added controllers