Refactor to allow type checks
Type checking
match_ (for matching against @_)