make router understand pattern bindings
make TCO availabel to pattern matching?

I mean, you never know, right?
use head, *rest to clarify recursive definition