code: def people(self):
          
          people = []
          bits = bytearray()
          byts = struct.unpack(
              APPUpdateMessage.fmt.format(len(self.payload)), self.payload
          )[::-1]
          # indices = range(7, -1, -1)
          indices = range(8)
          for aByte in byts[:-1]:
              for i in indices:
                  bit = aByte >> i & 1
                  bits.append(bit)
          # find marker
          mark = 7
          aByte = byts[-1]
          while aByte >> mark == 0 and mark > 0:
              mark -= 1
          if aByte >> mark != 1:
              raise ProtocolViolation(u"Failed to find marker ({})".format(
                  format_data(self.payload)
              ))
          # remove marker and add the rest
          for i in range(mark):
              bit = aByte >> i & 1
              bits.append(bit)
  
          if len(bits) % Person.BITS_PER_PERSON != 0:
              raise ProtocolViolation(
                  u"Payload seems to be malformed"
                  u" - Can not decode into people ({})".format(
                      format_data(self.payload)
                  )
              )
          # reverse
          i = len(bits)
          while i > 0:
              p = Person()
              # select the bits for this person and bring them in the right order
              # bits is currently in reverse order
              p.from_bits(bits[i - Person.BITS_PER_PERSON:i][::-1])
              people.append(p)
              i -= Person.BITS_PER_PERSON
          return people
docs: The people list stored in payload (decoded upon every call())
  
          :return: The people
          :rtype: list[paps.people.People]
          :raises ProtocolViolation:
              Failed to find marker
              Wrong number of bits in payload -> cannot decode into people