add pattern matching with expr)