refactoring ideas!