refactor everything and make it awesome