Refactoring and stuff, this is hard.