Added enough pattern matching to be able to do basic lambda abstraction