refactoring(fuck yeah)