add optional? operator