- Refactored protocol into its own module
- Added namespaces to avoid name collisions