moooore refactoring