starting the refactor