It seems a neverending task to update legacy code. The site you're looking at right now has code in it that date as far back as 2004- which is ancient in web terms. I constantly battle with updating parts of this engine, mostly because it's not written in OOP. I know this engine inside an out because I wrote every last line of it. God help anyone who might ever dive into it themselves :P
This engine was written to be as versitile as I could make it. It allows you to create pages of content. You can also attach any one of the 20+ apps to each page (forum, chat room, document factory, private messenger, blogs [like this one], webcasting, etc..). It has groups and members functionality (with pay membership) as well as collaboration tools. The engine has served as a church site, education site, science site and a personal site. There have been times where I thought I've done everything I could with the direction of the code- then I find new possibilities.

For instance- I'm creating a higher tier in this code that allows you to host many different sites on the same codeset using domain aliasing. This allows you to have a true network of sites that not only share the same database, but the same code files. It makes for easier and faster upgrades accross sites. I LOVE this stuff!
I know that I'll need to eventually let this code go and build anew in OOP, but it's kind of like my first car- Sure it was ugly, but it was my first and a hell of a lot of fun.
...God, I miss my Camaro.