Hi Joerg, I've been making a lot of cleanups out on SVN as I go through all the code as I write each chapter of the manual and discover things in the code which are less than optimal. I then deprecate or slightly tweak it. It's a good exercise but it'll drive you nuts, sorry about that. :-) Wait till people complain about the revised charting code API. So you've got the right idea. SimState's constructor is really *really* simple: public SimState(long seed) { this.random = new MersenneTwisterFast(seed); this.schedule = new Schedule(); this.seed = seed; // for GUIs later on if they want to know... } This means that all you have to do is call super(seed), then just set the schedule as you like, exactly like your example below. I expect your code to be safe for the foreseeable future. So I'm interested: what kind of code are you executing before and after each step? Is there a reason why MASON's "ordering" facility wouldn't be sufficient? Should we be thinking about adding a gizmo to the existing Schedule? Sean On Mar 22, 2011, at 2:32 AM, Joerg Hoehne wrote: > Hi developers, > in the current svn repository the SimState class was modified at > least the > constructors. This class does now only provide one constructor > accepting a > long a seed value for the random number generator. > In older releases it was allowed to specify a scheduler what I did > in the past. > I'm using a subclassed scheduler to execute some additional code > before and > after each simulation step. > Now I set the scheduler immediately after invoking super(seed) as > the code > example shows below. > > > private AbstractSimulation(IUserSimulation userSimulation) { > super(1); > this.schedule = new ScheduleExtended(); > <and some more code> > > My question is: Is this a safe way to set up an own Schedule object > and will it > be safe in the future? > > > Jörg