Every time I look at FrameLoader, it makes me cry. I think I have some time in my schedule to clean it up a bit. I haven't studied the code in detail, but my plan is as follows: 1) Separation of concerns. FrameLoader has its fingers in a bunch of different pies. In this phase, I'll try to break FrameLoader up into a bunch of smaller objects that are in charge of managing different pots of state. 2) Explicit state machines. FrameLoader holds a lot of state as bool members. In this phase, I'll try to convert these flags into an explicit state machine with clear state graph. 3) API surface reduction. FrameLoader has a large number of public entry points. In this phase, I'll reduce the API surface of the core state machines to it's more clear where clients can enter the machine. This is a big task, and I'm going to try to do it incrementally. If you have thoughts or would like input, let me know. Thanks, Adam