refactoring forever!!!