refactor and feedback