public void removeBuilding(Point2D location) throws InvalidLocationException, CannotDestroyBuildingException {
		if (!isInVillage(location))
			throw new InvalidLocationException();
		Building toDestroy = this.buildings[(int)location.getX()][(int)location.getY()];
		if (!isInVillage(new Point2D.Double(location.getX()+toDestroy.getWidth(), location.getY()+toDestroy.getHeight())))
			throw new InvalidLocationException();
		for (int i = (int) location.getX(); i < location.getX()+toDestroy.getWidth(); ++i)
		{
			for (int j = (int) location.getY(); j < location.getY()+toDestroy.getHeight(); ++j)
			{
				if (this.buildings[i][j] == null || this.buildings[i][j].isInfrastructure())
					throw new CannotDestroyBuildingException();
			}
		}

		for (int i = (int) location.getX(); i < location.getX()+toDestroy.getWidth(); ++i)
		{
			for (int j = (int) location.getY(); j < location.getY()+toDestroy.getHeight(); ++j)
			{
				this.buildings[i][j] = null;
			}
		}
	}