Love the effort and end goal! Here is my two cents... before continuing development, maybe think about looking into tasks. The reason I say this is because you will be able to reuse code very efficiently. This not only saves time, but cleanliness as well. Not to mention finding bugs is very easy since tasks are only found in specific classes. It is not a big deal to keep it state. I had my Jug of Wine maker as a state script for 3 years without having to edit it once. However I switched to a task based system because of how much easier it is to manage and makes the entire code look clean. Don't be afraid of tasks, they aren't as scary as some people make them seem. Either way, you're on the right track. I was not able to look at the code in detail, but if you have questions you can always ask! Just some other advice, make sure you don't use static code and unneeded checks. For one this will help insure your code does not break upon updates, and two it will help with CPU problems that larger scripts tend to get.