Index: src/com/medievaltech/advancewars/City.java
===================================================================
--- src/com/medievaltech/advancewars/City.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
+++ src/com/medievaltech/advancewars/City.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -0,0 +1,28 @@
+package com.medievaltech.advancewars;
+
+import android.graphics.Canvas;
+import android.graphics.Point;
+
+public class City {
+	public Player owner;
+	
+	public int maxHealth;
+	public int currentHealth;
+	
+	public int sightRange;
+	
+	public Point location;
+	
+	public City()  {
+		owner = null;
+		maxHealth = 10;
+		currentHealth = 10;
+	}
+	
+	public void draw(Canvas c, int x, int y) {
+		if(owner == null)
+			c.drawRect(x-20, y-20, x+20, y+20, Player.neutralColor);
+		else
+			c.drawRect(x-20, y-20, x+20, y+20, owner.getColor());
+	}
+}
Index: src/com/medievaltech/advancewars/Game.java
===================================================================
--- src/com/medievaltech/advancewars/Game.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/advancewars/Game.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -51,5 +51,5 @@
     		try {
     			PrintWriter p = new PrintWriter(new FileWriter(android.os.Environment.getExternalStorageDirectory()+"/save.txt"));
-    			mThread.mMap.save(p);
+    			Static.map.save(p);
     			p.close();
     		}catch(IOException ioe) {
Index: src/com/medievaltech/advancewars/GameView.java
===================================================================
--- src/com/medievaltech/advancewars/GameView.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/advancewars/GameView.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -22,5 +22,5 @@
         
         //maybe make this private and make an accessor for it
-        public Map mMap;
+        //public Map mMap;
         
         public Tile grassTile, oceanTile;
@@ -83,4 +83,8 @@
             mSelectionPaint.setAntiAlias(true);
             mSelectionPaint.setARGB(255, 255, 127, 0);
+            
+            Player.neutralColor = new Paint();
+            Player.neutralColor.setAntiAlias(true);
+            Player.neutralColor.setARGB(255, 127, 127, 127);
             
             wndMainMenu = new com.medievaltech.gui.Window(0, 0, 320, 450);;
@@ -94,14 +98,14 @@
             oceanTile = new Tile(mTilePaint2, TerrainType.SEA);
             
-            mMap = new Map(grassTile, 6, 8, new Point(10, 25));
+            Static.map = new Map(grassTile, 6, 8, new Point(10, 25));
             
             boolean land = true;
             
-            for(int x=0; x<mMap.getWidth(); x++) {
-    			for(int y=0; y<mMap.getHeight(); y++) {
+            for(int x=0; x<Static.map.getWidth(); x++) {
+    			for(int y=0; y<Static.map.getHeight(); y++) {
     				if(land)
-    					mMap.setTile(x, y, new Tile(grassTile, new Point(x, y)));
+    					Static.map.setTile(x, y, new Tile(grassTile, new Point(x, y)));
     				else
-    					mMap.setTile(x, y, new Tile(oceanTile, new Point(x, y)));
+    					Static.map.setTile(x, y, new Tile(oceanTile, new Point(x, y)));
     				land = !land;
     			}
@@ -112,7 +116,9 @@
             enemy = new Player("Comp", mUnitPaint2);
             
-            mMap.getTile(0, 0).addUnit(new Soldier(enemy));
-            mMap.getTile(2, 3).addUnit(new Soldier(humanPlayer));
-            mMap.getTile(5, 6).addUnit(new Soldier(humanPlayer));
+            Static.map.getTile(0, 0).addUnit(new Soldier(enemy));
+            Static.map.getTile(2, 3).addUnit(new Soldier(humanPlayer));
+            Static.map.getTile(5, 6).addUnit(new Soldier(humanPlayer));
+            
+            Static.map.getTile(4, 4).addBuilding(new City());
             
             mTurn = Turn.YOUR_TURN;
@@ -201,6 +207,6 @@
             		
             		//any unit that's in the way is removed (needs to be changed eventuallyy)
-            		thread.mMap.getTile(x, y).removeUnit();
-    				thread.mMap.getTile(x, y+1).addUnit(cur);
+            		Static.map.getTile(x, y).removeUnit();
+            		Static.map.getTile(x, y+1).addUnit(cur);
         		}
         		Log.i("AdvanceWars", "finished moving enemy units");
@@ -226,5 +232,5 @@
         		mTextPaint.setTextSize(12);
             	
-            	mMap.draw(canvas);
+        		Static.map.draw(canvas);
             	
             	if(selectedUnit != null) {
@@ -234,5 +240,6 @@
             	}
             	
-            	mMap.drawUnits(canvas);
+            	Static.map.drawBuildings(canvas);
+            	Static.map.drawUnits(canvas);
             	
         		break;
@@ -291,5 +298,5 @@
             			int offsetY = Integer.parseInt(offset.substring(offset.indexOf("x")+1));
             			
-            			thread.mMap = new Map(thread.grassTile, width, height, new Point(offsetX, offsetY));
+            			Static.map = new Map(thread.grassTile, width, height, new Point(offsetX, offsetY));
             			
             			Log.i("GameSave", "Created the map");
@@ -302,7 +309,7 @@
             					TerrainType type = TerrainType.values()[Integer.parseInt(arr[y])];
             					if(type.equals(TerrainType.LAND))
-                					thread.mMap.setTile(x, y, new Tile(thread.grassTile, new Point(10, 25)));
+            						Static.map.setTile(x, y, new Tile(thread.grassTile, new Point(10, 25)));
                 				else
-                					thread.mMap.setTile(x, y, new Tile(thread.oceanTile, new Point(10, 25)));
+                					Static.map.setTile(x, y, new Tile(thread.oceanTile, new Point(10, 25)));
             				}
             			}
@@ -316,5 +323,5 @@
                 			Player humanPlayer = new Player("Human", mGame.mThread.mUnitPaint1);
                 			
-            				mGame.mThread.mMap.getTile(x, y).addUnit(new Soldier(humanPlayer));
+                			Static.map.getTile(x, y).addUnit(new Soldier(humanPlayer));
             			}
             			
@@ -331,14 +338,14 @@
     			Log.i("AdvanceWars", "Touch event detected on battle map");
     			
-    			if(event.getX() >= thread.mMap.offset.x && event.getY() >= thread.mMap.offset.y) {
-    				int x = ((int)event.getX() - thread.mMap.offset.x) / 50;
-    				int y = ((int)event.getY() - thread.mMap.offset.y) / 50;
+    			if(event.getX() >= Static.map.offset.x && event.getY() >= Static.map.offset.y) {
+    				int x = ((int)event.getX() - Static.map.offset.x) / 50;
+    				int y = ((int)event.getY() - Static.map.offset.y) / 50;
     				
-    				Unit target = thread.mMap.getTile(x, y).currentUnit;
+    				Unit target = Static.map.getTile(x, y).currentUnit;
     				
     				if(thread.selectedUnit != null && thread.selectedUnit.getMovementRange().contains(new Point(x, y))) {
     					if(target == null || target == thread.selectedUnit) {
-	    						thread.mMap.getTile(thread.selectedUnit.location.x, thread.selectedUnit.location.y).removeUnit();
-	    						thread.mMap.getTile(x, y).addUnit(thread.selectedUnit);
+    							Static.map.getTile(thread.selectedUnit.location.x, thread.selectedUnit.location.y).removeUnit();
+    							Static.map.getTile(x, y).addUnit(thread.selectedUnit);
     					}else {
     						// the target contains another unit. If the unit is enemy-controlled, attack it
Index: src/com/medievaltech/advancewars/Map.java
===================================================================
--- src/com/medievaltech/advancewars/Map.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/advancewars/Map.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -80,3 +80,9 @@
 				grid[x][y].drawUnit(c, offset.x+50*x, offset.y+50*y);
 	}
+	
+	public void drawBuildings(Canvas c) {
+		for(int x=0; x<getWidth(); x++)
+			for(int y=0; y<getHeight(); y++)
+				grid[x][y].drawBuilding(c, offset.x+50*x, offset.y+50*y);
+	}
 }
Index: src/com/medievaltech/advancewars/Player.java
===================================================================
--- src/com/medievaltech/advancewars/Player.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
+++ src/com/medievaltech/advancewars/Player.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -0,0 +1,36 @@
+package com.medievaltech.advancewars;
+
+import java.util.*;
+
+import com.medievaltech.unit.Unit;
+
+import android.graphics.Paint;
+
+public class Player {
+	private String name;
+	private Paint color;
+	private ArrayList<Unit> units;
+	public static Paint neutralColor;
+	
+	public Player(String name, Paint color) {
+		this.name = name;
+		this.color = color;
+		units = new ArrayList<Unit>();
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public Paint getColor() {
+		return color;
+	}
+	
+	public ArrayList<Unit> getControlledUnits() {
+		return units;
+	}
+	
+	public void addUnit(Unit u) {
+		units.add(u);
+	}
+}
Index: src/com/medievaltech/advancewars/Tile.java
===================================================================
--- src/com/medievaltech/advancewars/Tile.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/advancewars/Tile.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -12,4 +12,5 @@
 	public double moveCoefficent;
 	public Unit currentUnit;
+	public City currentBuilding;
 	public Point point;
 	private Paint p;
@@ -19,4 +20,5 @@
 		this.type = type;
 		this.currentUnit = null;
+		this.currentBuilding = null;
 	}
 	
@@ -40,4 +42,9 @@
 	}
 	
+	public void addBuilding(City c) {
+		currentBuilding = c;
+		c.location = point;
+	}
+	
 	public void draw(Canvas c, int x, int y) {
 		c.drawRect(x, y, x+50, y+50, p);
@@ -48,3 +55,8 @@
 			currentUnit.draw(c, x+25, y+25);
 	}
+	
+	public void drawBuilding(Canvas c, int x, int y) {
+		if(currentBuilding != null)
+			currentBuilding.draw(c, x+25, y+25);
+	}
 }
Index: src/com/medievaltech/unit/Artillery.java
===================================================================
--- src/com/medievaltech/unit/Artillery.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Artillery.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,5 @@
 import android.graphics.Point;
 
+import com.medievaltech.advancewars.Player;
 import com.medievaltech.advancewars.Enum.*;
 
Index: src/com/medievaltech/unit/Mech.java
===================================================================
--- src/com/medievaltech/unit/Mech.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Mech.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,5 @@
 import android.graphics.Point;
 
+import com.medievaltech.advancewars.Player;
 import com.medievaltech.advancewars.Enum.*;
 
Index: c/com/medievaltech/unit/Player.java
===================================================================
--- src/com/medievaltech/unit/Player.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ 	(revision )
@@ -1,33 +1,0 @@
-package com.medievaltech.unit;
-
-import java.util.*;
-
-import android.graphics.Paint;
-
-public class Player {
-	private String name;
-	private Paint color;
-	private ArrayList<Unit> units;
-	
-	public Player(String name, Paint color) {
-		this.name = name;
-		this.color = color;
-		units = new ArrayList<Unit>();
-	}
-	
-	public String getName() {
-		return name;
-	}
-	
-	public Paint getColor() {
-		return color;
-	}
-	
-	public ArrayList<Unit> getControlledUnits() {
-		return units;
-	}
-	
-	public void addUnit(Unit u) {
-		units.add(u);
-	}
-}
Index: src/com/medievaltech/unit/Recon.java
===================================================================
--- src/com/medievaltech/unit/Recon.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Recon.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,5 @@
 import android.graphics.Point;
 
+import com.medievaltech.advancewars.Player;
 import com.medievaltech.advancewars.Enum.*;
 
Index: src/com/medievaltech/unit/SmTank.java
===================================================================
--- src/com/medievaltech/unit/SmTank.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/SmTank.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,5 @@
 import android.graphics.Point;
 
+import com.medievaltech.advancewars.Player;
 import com.medievaltech.advancewars.Enum.*;
 
Index: src/com/medievaltech/unit/Soldier.java
===================================================================
--- src/com/medievaltech/unit/Soldier.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Soldier.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,7 @@
 import android.graphics.Point;
 
+import com.medievaltech.advancewars.Player;
+import com.medievaltech.advancewars.Static;
+import com.medievaltech.advancewars.Tile;
 import com.medievaltech.advancewars.Enum.*;
 
@@ -27,6 +30,14 @@
 	@Override
 	public void attack(Point point) {
-		// TODO Auto-generated method stub
-	
+		Tile t = Static.map.getTile(point);
+		
+		if(t.currentUnit == null && t.currentBuilding != null) {
+			t.currentBuilding.currentHealth -= this.currentHealth;
+			
+			if(t.currentBuilding.currentHealth <= 0) {
+				t.currentBuilding.owner = this.owner;
+				t.currentBuilding.currentHealth = t.currentBuilding.maxHealth;
+			}
+		}
 	}
 
Index: src/com/medievaltech/unit/Transport.java
===================================================================
--- src/com/medievaltech/unit/Transport.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Transport.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -1,3 +1,5 @@
 package com.medievaltech.unit;
+
+import com.medievaltech.advancewars.Player;
 
 public abstract class Transport extends Unit {
Index: src/com/medievaltech/unit/Unit.java
===================================================================
--- src/com/medievaltech/unit/Unit.java	(revision 511177b6d78beb736fc600e9e73145b28a1354be)
+++ src/com/medievaltech/unit/Unit.java	(revision 41c11ddbc8715657adbee13ce2a02275cc620a31)
@@ -5,4 +5,5 @@
 import android.graphics.*;
 
+import com.medievaltech.advancewars.Player;
 import com.medievaltech.advancewars.Enum.*;
 
