Still a lot of work left to scale the remainder of the game (performance-wise), though.
Edit to add: It's also tricky when there are bitmask scopes of availability (is agent secure? is agent first class passenger? is agent a staff member with a badge? etc) and traversal-abilities; and then when you want to add in better heuristics to achieve neat stuff like moving walkways, etc. =)
1 - Disclaimer: Am one of the two devs of SimAirport. http://store.steampowered.com/app/598330
I ALWAYS find making Undo/Redo robust to be one of the biggest challenges in any software application.
Unless you base entire systems' designs around making undo/redo easy, but then it feels like you're making a lot more work for yourself elsewhere.
Because the CAD concept in general is build around parameterisation every modification the user makes needs to be able to be remade with on a different starting (or previous) state. In a way it becomes even more then a first class citizen functionality in the application. The entire history stack (timeline) is available and you can even directly edit, reorder or modify individual steps and their parameters instead of just un/redoing them.
It's also used by state management libraries like Redux. The concept is generic and simple enough that it can be applied to any application where a timeline of state snapshots is useful, so maintaining a history for undo/redo purposes and audit logs is a great fit for it.