use a generator
Move messages to protocol package