added Option[A] functionality