More robust (but slower) optional clauses