add feature hierarchy
refactor features