proper treatment of optional arguments