better support for code
allow patterns to have a type