@classmethod
def create(cls, packet_type, *args, **kwargs):
    """Dynamically create a packet from its type and parameters."""
    packet_cls = cls.registry.get(cls.process_packet_type(packet_type))
    if packet_cls is None:
        raise ValueError('no packet type {}'.format(packet_type))
    return packet_cls(*args, **kwargs)
