delegated data extraction to factory