Replaced protocol enum with packet registry abstract class. Allows for easier implementation of multiple protocols, both internally and externally.