Game controller class - best practices?

Trying to create a game with several levels with multiple sequential steps in each.

What is the best approach?

So far I’ve created a document class (“Controller”) which initializes the game and then calls functions in a sequential fashion:



function initGame() 
{
            xmlGameData = new XML( ... );
            displayStartDialog();
}
        
function displayStartDialog()
{
           dialog = new DialogBox();[INDENT]addChild(dialog);    
[/INDENT]}
        
function loadGameBoard(e:MouseEvent)
{
       TweenLite.to(dialog, 0.4, {alpha:0});[INDENT]gameBoard = new GameBoard(this);
[/INDENT][INDENT]addChild(gameBoard);          
[/INDENT]}

As the project grows I’m afraid this structure will not do.
Do you have any ideas of how I can improve it?

How should I keep track of the state of the game, tween objects in and out, show scores etc.

Should all the logic be handled by the controller or how much should be outsourced to other classes?

All advice appreciated and please point me to any oop game structure/controller/concept tutorials that might be of interest!

Thank you!