This implements the core of a Participant to manage the majority of the mundane functions allowing the user to start writing the agent's behaviours sooner.
Participant