I've coded game engines before, but I'm trying to figure out how to build one around Ogre now

Should each game state have it's own...
a) Root node
b) Scene Manager
c) Or something even higher level...maybe each state clears the scene manager when it comes into scope?
Also, are frame listeners the best way to implement a game logic loop? All the examples use them. Can I call a draw method on the Root node and work with Ogre that way? That way I could do my whole own timing/game logic loop thing with less hassle.
Any suggestions are appreciated
