I've been viewing closely how I hacked together "Pierre and the Fish" to get ideas for how to approach the architecture of my next game. Given the backbone of the engine was the version of the Enginuity series kernel I had written for an earlier project, it isn't actually that bad. I'll definitely reuse all the kernel and some of the template code for managing memory pools. The bit that is worst is the task for the game itself; since the game was only written in a few days it's a huge hack.
I'm not sure about the best way to structure the game controlling task itself. There's actually a thread in the game programming forum (this one here) where that very question was asked (very fortuitous!). My gut feeling is that pretty much any approach I choose to plan this will work, it's just that some approaches will work better than others. My further feeling is that I'll never know which architecture is the best unless I try one out, so I'll correct some of the more obvious mistakes in my "Pierre and the Fish" design and run with that in a sample game.