add extract function