Happy to answer any questions about the architecture or why I kept it strictly event-based instead of agent-based. Feedback welcome.