As you might imagine, I've got some thoughts on this... =D The size of the code is not actually that important, but it tends to be an indicator of something else that could influence runtime: design choices. I tend to find the hardest part of any programming problem is not really the functionality per se, but the way the data is organized. You can use a very simplistic structure that causes you to need to do a lot more work to use it, or you can use a cleverer structure that makes using it much easier. Coming up with that clever structure is often where the most work (and most fun!) is. There's something of an adage in computer science that you can "trade memory for speed." Caching is a very straight forward example. You could calculate the sine of an angle every time you need it, or you could calculate it once each time an angle is passed to your sine function and just return the cached result on subsequent calls (you can even prime the cache with the sine of the most common angles and not need to calculate them at all!). Another apropos example is indexing. You could have an array of objects you care about and just search through it for the right one each time, or you could keep a lookup from some key bit of information (name, id, etc) that gives you the index of the item in the array and save the time looking. As far as state goes, it is limited in size, but (at this point) is still pretty large. If you're filling 2mb, you're probably doing something wrong. You could definitely store events in the state and probably not worry too much about it. (This is precisely what I do in the Imperial Calendar Script.) Something else to consider though is portability. The State is locked to a particular Game, and not easy to transport. If you wanted to have the same Calendar in two different games, you'd have to manually copy the data out and enter it back in. If I were doing a calendar script again, I'd create a Character that represented the Calendar and add the events as Attributes on that Character. That way the Calendar "Character" could be moved to another game to copy it's events over. I'd probably store the data Base64 encoded (I have a script for that in the repo) so it couldn't get corrupted by the browser and on script startup, I'd find the Calendar Character and use it's ID to grab all the Attributes for that Character and prime an in memory cache of events, keeping the Attribute ID along with the data I read from it. If the event gets removed or modified, you can use that ID to remove or modify the corresponding Attribute. If the Attribute gets removed for some reason outside of your script, you could recreate it with the data in your cache (provided you were currently running). One way to address bloat is by inserting some abstraction (Another adage, largely tongue-in-cheek, is "there's no problem in computer science that can't be solved with another layer of abstraction."). If you can find a way to abstract the interface to lunar cycles, seasons/days/weeks/months/years, weather, etc. you can create implementations of that interface for each of the different worlds. Even if it's a simple as a collection of expected functions to get the names of the week, names of the month, length of the year, etc. Hope that helps. =D