Add @djspiewak's optional combinator