Do some necessary restructuring: introduce "feature extractor" abstraction