2 refactor features