reworked matching a bit (simplifies the recursion)

added a tagless version of invoke (need to evaluate emitted asm if it's worth it)