Index: src/com/example/advancewars/GameView.java
===================================================================
--- src/com/example/advancewars/GameView.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
+++ src/com/example/advancewars/GameView.java	(revision 26a9fd626bcc1c5ed785a89b48ad289c4fcf67ac)
@@ -59,5 +59,5 @@
         private SurfaceHolder mSurfaceHolder;
         
-        private Hashtable<String, GUIObject> drawableObjects;
+        private com.example.gui.Window wndMainMenu, wndBattleMap;
         
         public DrawingThread(SurfaceHolder surfaceHolder, Context context, Handler handler) {
@@ -91,11 +91,10 @@
             mTilePaint2.setARGB(255, 0, 0, 255);
             
-            drawableObjects = new Hashtable<String, GUIObject>();
-            
-            drawableObjects.put("txtTitle", new Text("Main Menu", 100, 30, 120, 20, mTextPaint));
-            drawableObjects.put("btnNewGame", new Button("New Game", 100, 90, 120, 20, mLinePaint, mButtonPaint));
-            drawableObjects.put("btnLoadGame", new Button("Load Game", 100, 125, 120, 20, mLinePaint, mButtonPaint));
-            drawableObjects.put("btnMapEditor", new Button("Map Editor", 100, 160, 120, 20, mLinePaint, mButtonPaint));
-            drawableObjects.put("btnQuit", new Button("Quit", 100, 195, 120, 20, mLinePaint, mButtonPaint));
+            wndMainMenu = new com.example.gui.Window(0, 0, 320, 450);;
+            wndMainMenu.addGUIObject("txtTitle", new Text("Main Menu", 100, 30, 120, 20, mTextPaint));
+            wndMainMenu.addGUIObject("btnNewGame", new Button("New Game", 100, 90, 120, 20, mLinePaint, mButtonPaint));
+            wndMainMenu.addGUIObject("btnLoadGame", new Button("Load Game", 100, 125, 120, 20, mLinePaint, mButtonPaint));
+            wndMainMenu.addGUIObject("btnMapEditor", new Button("Map Editor", 100, 160, 120, 20, mLinePaint, mButtonPaint));
+            wndMainMenu.addGUIObject("btnQuit", new Button("Quit", 100, 195, 120, 20, mLinePaint, mButtonPaint));
             
             Tile grassTile = new Tile(mTilePaint1);
@@ -331,7 +330,5 @@
         	switch(mGameState) {
         	case MAIN_MENU:
-            	for (GUIObject o : drawableObjects.values()) {
-            		o.draw(canvas);
-            	}
+            	wndMainMenu.draw(canvas);
         		break;
         	case BATTLE_MAP:
@@ -403,9 +400,9 @@
     		case MAIN_MENU:
     			Log.i("AdvanceWars", "Switching to battle map");
-    			if(thread.drawableObjects.get("btnNewGame").isClicked(event.getX(), event.getY())) {
+    			if(thread.wndMainMenu.getGUIObject("btnNewGame").isClicked(event.getX(), event.getY())) {
     				thread.mGameState = GameState.BATTLE_MAP;
-    			}else if(thread.drawableObjects.get("btnLoadGame").isClicked(event.getX(), event.getY())) {
+    			}else if(thread.wndMainMenu.getGUIObject("btnLoadGame").isClicked(event.getX(), event.getY())) {
     				thread.mGameState = GameState.BATTLE_MAP;
-    			}else if(thread.drawableObjects.get("btnQuit").isClicked(event.getX(), event.getY())) {
+    			}else if(thread.wndMainMenu.getGUIObject("btnQuit").isClicked(event.getX(), event.getY())) {
     				mGame.finish();
     			}
Index: src/com/example/advancewars/Tile.java
===================================================================
--- src/com/example/advancewars/Tile.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
+++ src/com/example/advancewars/Tile.java	(revision 26a9fd626bcc1c5ed785a89b48ad289c4fcf67ac)
@@ -1,3 +1,5 @@
 package com.example.advancewars;
+
+import com.example.gui.GUIObject;
 
 import android.graphics.Canvas;
