refactor features