#42 Some cleanup to protocol.py
#42 Factor protocol into its package structure