Treat commands as functions.
start explaining pattern matching