add CommandOptMonad