Maciej Latek and I are working on a revised version of the Schedule which is somewhat more complex but is expected to perform better when you have larger numbers of agents and a small number of orderings per timestep. The downside is that it must use a Hashtable internally to retain various Bags, and the hashing provides a constant overhead. So it might or might not be faster for your application. In MASON you can just drop in a replacement for your Schedule, like this: public HeatBugs(long seed) { this(seed, 100, 100, 100); schedule = new Schedule2(); // dump the old Schedule, use Schedule2 instead } So this means that we might offer Schedule2.java as an option rather than replacing Schedule.java if people like it. Let me know what you think -- did it make your simulation faster?