I have tomorrow off, this is a good thing.
I took it off because
eduard_green is in hospital, having blemishes removed. Therefore I knew I'd have to leave the code at work in a usable state so other people could change, test and run things.
Which means it was probably silly to start making changes to the underlying global data object yesterday lunchtime that required changes to 90% of the code, leaving me, at 4:30 today, with everything locked exclusively to me, nothing quite working, and the other coders possibly having nothing to work on the day I'm off.
Luckily, at 5:45 I finished off the last of the bugs, got it all working and checked it back in, breathing a sigh of relief.
I'm sure it's not _actually_ fixed - there are bound to be a few things that need to be sorted - and there's more refactoring to come, but at least it all works, and under the new design making changes is much easier. Now I've got the hang of events keeping track of what's going on, notifying users and making things run more smoothly is dead easy.