generic extractor