Add AgentOperation and move the dispatcher to it's own class.