I would favor a redesign from scratch, personally. Currently, it isn't nearly as bad, codewise, as some other subsystems I will not mention by name (you know which ones I mean), but once it gets patched to do some of the stuff I've seen discussed here, it would likely be a serious contender for placing.
no subject