tons of refactor. tons of fun