Pass in agents rather than instantiate them