Index: res/values/strings.xml
===================================================================
--- res/values/strings.xml	(revision 90838a1725b61262e2c7bba0bdd46b8233d24cd0)
+++ res/values/strings.xml	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -2,5 +2,5 @@
 <resources>
     <string name="hello">Hello World, advancewars!</string>
-    <string name="app_name"></string>
+    <string name="app_name">Advance Wars</string>
     <string name="menu_exit">Exit</string>
 </resources>
Index: src/com/example/advancewars/Game.java
===================================================================
--- src/com/example/advancewars/Game.java	(revision 90838a1725b61262e2c7bba0bdd46b8233d24cd0)
+++ src/com/example/advancewars/Game.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -52,6 +52,4 @@
             	this.finish();
             	break;
-            case MENU_NEW:
-            	break;
         }
 
@@ -67,9 +65,9 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-    	Log.w("Blackjack", "We're inside onCreate");
+    	Log.w("AdvanceWars", "We're inside onCreate");
     	
         super.onCreate(savedInstanceState);
         
-        Log.w("Blackjack", "the super constructor was called successfully");
+        Log.w("AdvanceWars", "the super constructor was called successfully");
 
         // turn off the window's title bar
@@ -81,13 +79,14 @@
         mGameView = (GameView) findViewById(R.id.lunar);
         mThread = mGameView.getThread();
+        mGameView.mGame = this;
 
         mGameView.setTextView((TextView) findViewById(R.id.text));
 
         if (savedInstanceState == null) {	// we were just launched: set up a new game
-        	Log.w("Blackjack", "SIS is null");
+        	Log.w("AdvanceWars", "SIS is null");
         	
         	mThread.setState(AppState.RUNNING);
         } else {
-            Log.w("Blackjack", "SIS is nonnull");
+            Log.w("AdvanceWars", "SIS is nonnull");
             
             mThread.setState(AppState.RUNNING);
Index: src/com/example/advancewars/GameView.java
===================================================================
--- src/com/example/advancewars/GameView.java	(revision 90838a1725b61262e2c7bba0bdd46b8233d24cd0)
+++ src/com/example/advancewars/GameView.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -2,4 +2,6 @@
 
 import java.util.*;
+
+import com.example.gui.*;
 
 import android.content.Context;
@@ -57,6 +59,7 @@
         private SurfaceHolder mSurfaceHolder;
         
-        public DrawingThread(SurfaceHolder surfaceHolder, Context context,
-                Handler handler) {
+        private Hashtable<String, GUIObject> drawableObjects;
+        
+        public DrawingThread(SurfaceHolder surfaceHolder, Context context, Handler handler) {
             // get handles to some important objects
             mSurfaceHolder = surfaceHolder;
@@ -72,4 +75,5 @@
             mTextPaint.setARGB(255, 255, 255, 255);
             mTextPaint.setTextSize(12);
+            mTextPaint.setTextAlign(Paint.Align.CENTER);
             
             mButtonPaint = new Paint();
@@ -86,4 +90,12 @@
             mTilePaint2.setAntiAlias(true);
             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));
             
             Tile grassTile = new Tile(mTilePaint1);
@@ -116,5 +128,5 @@
                 mLastTime = System.currentTimeMillis() + 100;
                 setState(AppState.RUNNING);
-                Log.i("Blackjack", "Player's turn starting now");
+                Log.i("AdvanceWars", "Player's turn starting now");
                 mGameState = GameState.MAIN_MENU;
             }
@@ -234,5 +246,5 @@
                 mCanvasHeight = height;
                 
-                Log.i("Blackjack", "width: "+mCanvasWidth+", height: "+mCanvasHeight);
+                Log.i("AdvanceWars", "width: "+mCanvasWidth+", height: "+mCanvasHeight);
             }
         }
@@ -319,6 +331,7 @@
         	switch(mGameState) {
         	case MAIN_MENU:
-        		text = "Main Menu";
-            	canvas.drawText(text, 0, 450-(metrics.ascent+metrics.descent)/2, mTextPaint);
+            	for (GUIObject o : drawableObjects.values()) {
+            		o.draw(canvas);
+            	}
         		break;
         	case BATTLE_MAP:
@@ -360,4 +373,6 @@
     /** The thread that actually draws the animation */
     private DrawingThread thread;
+    
+    public Game mGame;
 
     public GameView(Context context, AttributeSet attrs) {
@@ -381,15 +396,22 @@
 
     @Override public boolean onTouchEvent(MotionEvent event) {
-    	Log.i("Blackjack", "Detected touch event");
+    	Log.i("AdvanceWars", "Detected touch event");
     	
     	if(event.getAction() == MotionEvent.ACTION_UP) {
-    		Log.i("Blackjack", "Detected UP touch action");
+    		Log.i("AdvanceWars", "Detected UP touch action");
     		switch(thread.mGameState) {
     		case MAIN_MENU:
-    			Log.i("Blackjack", "Switching to battle map");
-    			thread.mGameState = GameState.BATTLE_MAP;
+    			Log.i("AdvanceWars", "Switching to battle map");
+    			if(thread.drawableObjects.get("btnNewGame").isClicked(event.getX(), event.getY())) {
+    				thread.mGameState = GameState.BATTLE_MAP;
+    			}else if(thread.drawableObjects.get("btnLoadGame").isClicked(event.getX(), event.getY())) {
+    				thread.mGameState = GameState.BATTLE_MAP;
+    			}else if(thread.drawableObjects.get("btnQuit").isClicked(event.getX(), event.getY())) {
+    				mGame.finish();
+    			}
     			break;
     		case BATTLE_MAP:
-    			Log.i("Blackjack", "Touch event detected on battle map");
+    			Log.i("AdvanceWars", "Touch event detected on battle map");
+    			thread.mGameState = GameState.MAIN_MENU;
     			break;
     		}
Index: src/com/example/gui/Button.java
===================================================================
--- src/com/example/gui/Button.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
+++ src/com/example/gui/Button.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -0,0 +1,23 @@
+package com.example.gui;
+
+import android.graphics.Canvas;
+import android.graphics.Paint;
+
+public class Button extends GUIObject {
+	private String text;
+	private Paint textPaint;
+	private float vOffset;
+	
+	public Button(String newText, int newX, int newY, int newWidth, int newHeight, Paint linePaint, Paint textPaint) {
+		super(newX, newY, newWidth, newHeight, linePaint);
+		
+		this.textPaint = textPaint;
+		text = newText;	
+		vOffset = -(textPaint.getFontMetrics().ascent+textPaint.getFontMetrics().descent)/2;
+	}
+	
+	public void draw(Canvas c) {
+		c.drawRect(x, y, x+width, y+height, p);
+		c.drawText(text, x+width/2, y+height/2+vOffset, textPaint);
+	} 
+}
Index: src/com/example/gui/GUIObject.java
===================================================================
--- src/com/example/gui/GUIObject.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
+++ src/com/example/gui/GUIObject.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -0,0 +1,40 @@
+package com.example.gui;
+
+import android.graphics.*;
+
+public class GUIObject {
+	protected int x, y, width, height;
+	protected Paint p;	//all properties of the object are determined through the paint object
+	
+	public GUIObject(int newX, int newY, int newWidth, int newHeight, Paint p) {
+		x = newX;
+		y = newY;
+		width = newWidth;
+		height = newHeight;
+		this.p = p;
+	}
+	
+	public void draw(Canvas c) {
+
+	}
+	
+	public boolean isClicked(float xCoord, float yCoord) {
+		return x <= xCoord && xCoord <= x+width && y <= yCoord && yCoord <= y+height;
+	}
+	
+	public int getX() {
+		return x;
+	}
+	
+	public int getY() {
+		return y;
+	}
+	
+	public int getWidth() {
+		return width;
+	}
+	
+	public int getHeight() {
+		return height;
+	}
+}
Index: src/com/example/gui/Text.java
===================================================================
--- src/com/example/gui/Text.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
+++ src/com/example/gui/Text.java	(revision 205f52559a003a3536c9a449195016f93a0b4c4b)
@@ -0,0 +1,22 @@
+package com.example.gui;
+
+import android.graphics.Canvas;
+import android.graphics.Paint;
+
+public class Text extends GUIObject {
+	private String text;
+	private Paint textPaint;
+	private float vOffset;
+	
+	public Text(String newText, int newX, int newY, int newWidth, int newHeight, Paint textPaint) {
+		super(newX, newY, newWidth, newHeight, null);
+		
+		this.textPaint = textPaint;
+		text = newText;	
+		vOffset = -(textPaint.getFontMetrics().ascent+textPaint.getFontMetrics().descent)/2;
+	}
+	
+	public void draw(Canvas c) {
+		c.drawText(text, x+width/2, y+height/2+vOffset, textPaint);
+	} 
+}
