refactoring all up in this b****