First pass at abstract FeatureExtractor