refactoring completed except AggregationFeatureReader