recursive extraction works; need to figure out ordering