lots o refactoring