ooh boy more refactoring