The agent base class should be an abstract class with abstract methods constraining new agent definitions.