more OOP design of Agents