first actual refactor