try out reducing pattern matching for function definitions