some refactoring. some shits.