An object oriented design of the current code
OOP update of agent code