The reason I didn't make constructor private is for that very reason - I don't think singletons are that great either.  And it makes testing more pleasant.  Eventually I see us passing a 'context' to each agent whenever we tick/tock it - the context will contain refs to things like the event manager, current time, etc.  If we agree that this is where things are going I am inclined to leave it public - sound reasonable?