tons of refactoring and cleanup