docs: def to_dict(self, properties=None):
          """Return a dictionary containing Substance data.
  
          If the properties parameter is not specified, everything except cids and aids is included. This is because the
          aids and cids properties each require an extra request to retrieve.
  
          :param properties: (optional) A list of the desired properties.
          """
          if not properties:
              skip = {'deposited_compound', 'standardized_compound', 'cids', 'aids'}
              properties = [p for p in dir(Substance) if isinstance(getattr(Substance, p), property) and p not in skip]
          return {p: getattr(self, p) for p in properties}