This isn't a patch or pull request. It is an architectural issue that requires extensive changes.
Right, and we don't accept "change the world" pull requests because the risks of introducing a catastrophic bug outweigh the benefits, and rewriting everything invalidates all of the careful code review that's been done over the past few years.However, we ARE moving towards better architecture as different parts of the code get worked on to support new features or improve scalability or fix bugs. For an example of inversion-of-control done right, look for use of boost signals and slots; for example:
Code:
boost::signals2::signal<void (CWallet *wallet, const uint256 &hashTx, ChangeType status)> NotifyTransactionChanged;