code: def diff(cls, *args, **kwargs):
          newkeys = bool(kwargs.get('newkeys', False))
          ignore = kwargs.get('ignore', list())
          if len(args) < 2:
              raise ValueError('less than two ents given to Ent.diff()')
          elif not all(isinstance(s, Ent) for s in args):
              raise ValueError('all positional arguments to Ent.diff() must '
                               'be instances of Ent')
          s1 = args[0]
          differences = Ent()
          for s2 in args[1:]:
              for key, value in s2.__dict__.items():
                  if key in ignore:
                      continue
                  if key in s1.__dict__:
                      v1 = s1.__dict__[key]
                      if type(value) == type(v1):
                          if isinstance(v1, Ent):
                              delta = cls.diff(v1, value, **kwargs)
                              if len(delta.__dict__):
                                  differences.__dict__[key] = delta
                          elif v1 != value:
                              differences.__dict__[key] = cls.load(value)
                  elif newkeys:
                      differences.__dict__[key] = cls.load(value)
              s1 = s2
          return differences