Subclass packets to split functionality - first pass
Fixed up conflicts, another pass at subclassing for packets