broke extension, added recursion, wip