docs: def to_bytes(self):
          '''
          Create bytes from properties
          '''
          # Verify that the properties make sense
          self.sanitize()
  
          # Write the version
          bitstream = BitStream('uint:4=%d' % self.version)
  
          # Write the header length
          options_len = math.ceil(len(self.options) / 4.0)
          bitstream += BitStream('uint:4=%d' % (5 + options_len))
  
          # Write the type of service
          bitstream += BitStream('uint:8=%d' % self.tos)
  
          # Write the total length
          payload_bytes = bytes(self.payload)
          total_length = 20 + len(payload_bytes)
          bitstream += BitStream('uint:16=%d' % total_length)
  
          # Write the identification
          bitstream += BitStream('uint:16=%d' % self.identification)
  
          # Write the flags
          bitstream += BitStream('bool=False, bool=%d, '
                                 'bool=%d' % (self.dont_fragment,
                                              self.more_fragments))
  
          # Write the fragment offset
          bitstream += BitStream('uint:13=%d' % self.fragment_offset)
  
          # Write the TTL
          bitstream += BitStream('uint:8=%d' % self.ttl)
  
          # Write the protocol number
          bitstream += BitStream('uint:8=%d' % self.protocol)
  
          # Write the header checksum as 0 for now, we calculate it later
          bitstream += BitStream('uint:16=0')
  
          # Write the source and destination addresses
          bitstream += BitStream('uint:32=%d, '
                                 'uint:32=%d' % (int(self.source),
                                                 int(self.destination)))
  
          # Add the options
          bitstream += BitStream(bytes=self.options)
          padding_len = (4 - (len(self.options) % 4)) % 4
          bitstream += BitStream(padding_len * 8)
  
          # Calculate the header checksum and fill it in
          my_checksum = checksum.ones_complement(bitstream.bytes)
          bitstream[80:96] = BitStream('uint:16=%d' % my_checksum)
  
          return bitstream.bytes + payload_bytes