Lots and lots of changes to begin using the CommunicationLayer with the agent