added core.agent and extended agent classes