docs: def as_dict(self):
          """
          returns an dict version of the object, based on it's attributes
          """
          if hasattr(self, 'cust_dict'):
              return self.cust_dict
          if hasattr(self, 'attr_check'):
              self.attr_check()
          cls_bltns = set(dir(self.__class__))
          return {a: getattr(self, a) for a in dir(self) if a not in cls_bltns}