implement extract