support pattern matching on terms and explicit recursion