added compiler object and agent object to support the agent abstraction