implement extract

* make remove public (maybe it should still be private?)
update TODO