added if_some, if_none