refactoring -_-