add extractor trait