Split out the message processing code from the lower level communications code.
This is too facilitate the use of other communication media in the future.