refactor it all