docs: def add_options(self):
          """ Add program options.
          """
          super(RtorrentControl, self).add_options()
  
          # basic options
          self.add_bool_option("--help-fields",
              help="show available fields and their description")
          self.add_bool_option("-n", "--dry-run",
              help="don't commit changes, just tell what would happen")
          self.add_bool_option("--detach",
              help="run the process in the background")
          self.prompt.add_options()
  
          # output control
          self.add_bool_option("-S", "--shell",
              help="escape output following shell rules")
          self.add_bool_option("-0", "--nul", "--print0",
              help="use a NUL character instead of a linebreak after items")
          self.add_bool_option("-c", "--column-headers",
              help="print column headers")
          self.add_bool_option("-+", "--stats",
              help="add sum / avg / median of numerical fields")
          self.add_bool_option("--summary",
              help="print only statistical summary, without the items")
          #self.add_bool_option("-f", "--full",
          #    help="print full torrent details")
          self.add_bool_option("--json",
              help="dump all items as JSON (use '-o f1,f2,...' to specify fields)")
          self.add_value_option("-o", "--output-format", "FORMAT",
              help="specify display format (use '-o-' to disable item display)")
          self.add_value_option("-O", "--output-template", "FILE",
              help="pass control of output formatting to the specified template")
          self.add_value_option("-s", "--sort-fields", "[-]FIELD[,...] [-s...]",
              action='append', default=[],
              help="fields used for sorting, descending if prefixed with a '-'; '-s*' uses output field list")
          self.add_bool_option("-r", "--reverse-sort",
              help="reverse the sort order")
          self.add_value_option("-A", "--anneal", "MODE [-A...]",
              type='choice', action='append', default=[],
              choices=('dupes+', 'dupes-', 'dupes=', 'invert', 'unique'),
              help="modify result set using some pre-defined methods")
          self.add_value_option("-/", "--select", "[N-]M",
              help="select result subset by item position (counting from 1)")
          self.add_bool_option("-V", "--view-only",
              help="show search result only in default ncurses view")
          self.add_value_option("--to-view", "--to", "NAME",
              help="show search result only in named ncurses view")
          self.add_bool_option("--append-view", "--append",
              help="DEPRECATED: use '--alter append' instead")
          self.add_value_option("--alter-view", "--alter", "MODE",
              type='choice', default=None, choices=self.ALTER_MODES,
              help="alter view according to mode: {} (modifies -V and --to behaviour)"
                   .format(', '.join(self.ALTER_MODES)))
          self.add_bool_option("--tee-view", "--tee",
              help="ADDITIONALLY show search results in ncurses view (modifies -V and --to behaviour)")
          self.add_value_option("--from-view", "--from", "NAME",
              help="select only items that are on view NAME (NAME can be an info hash to quickly select a single item)")
          self.add_value_option("-M", "--modify-view", "NAME",
              help="get items from given view and write result back to it (short-cut to combine --from-view and --to-view)")
          self.add_value_option("-Q", "--fast-query", "LEVEL",
              type='choice', default='=', choices=('=', '0', '1', '2'),
              help="enable query optimization (=: use config; 0: off; 1: safe; 2: danger seeker)")
          self.add_value_option("--call", "CMD",
              help="call an OS command pattern in the shell")
          self.add_value_option("--spawn", "CMD [--spawn ...]",
              action="append", default=[],
              help="execute OS command pattern(s) directly")
  # TODO: implement -S
  #        self.add_bool_option("-S", "--summary",
  #            help="print statistics")
  
          # torrent state change (actions)
          for action in self.ACTION_MODES:
              action.setdefault("label", action.name.upper())
              action.setdefault("method", action.name)
              action.setdefault("interactive", False)
              action.setdefault("argshelp", "")
              action.setdefault("args", ())
              if action.argshelp:
                  self.add_value_option(*action.options + (action.argshelp,),
                      **{"help": action.help + (" (implies -i)" if action.interactive else "")})
              else:
                  self.add_bool_option(*action.options,
                      **{"help": action.help + (" (implies -i)" if action.interactive else "")})
          self.add_value_option("--ignore", "|".join(self.IGNORE_OPTIONS),
              type="choice", choices=self.IGNORE_OPTIONS,
              help="set 'ignore commands' status on torrent")
          self.add_value_option("--prio", "|".join(self.PRIO_OPTIONS),
              type="choice", choices=self.PRIO_OPTIONS,
              help="set priority of torrent")
          self.add_bool_option("-F", "--flush", help="flush changes immediately (save session data)")