a refactor