re-worked all agent constructors