public boolean move(double newBearing) {
		// if the newBearing is -1, then leave it on the ground
		if ((bearing == -1 && newBearing == -1))
			return true;

		// see if it's a legal move
		if (!isLegalMove(newBearing)) {
			return false;
		}
				
		// this allows bearing to be equal to 360, in which case we treat it as 0
		double radialBearing = newBearing % 360;
		
		radialBearing = (radialBearing-90) * Math.PI/180;
		double newx = this.x + (Math.cos(radialBearing)*VELOCITY);
		double newy = this.y + (Math.sin(radialBearing)*VELOCITY);
		
		// make sure they're still in bounds
		if (newx < 0 || newx > 100) {
			System.err.println("Error! new x-coordinate position " + newx + " is out of bounds!");
			return false;
		}
		if (newy < 0 || newy > 100) {
			System.err.println("Error! new y-coordinate position " + newy + " is out of bounds!");
			return false;
		}
				
		this.x = newx; //this.x + (Math.cos(bearing)*DISTANCE);
		this.y = newy; //this.y + (Math.sin(bearing)*DISTANCE);
		//this.bearing = bearing * 180/Math.PI;
		this.bearing = newBearing;
		
		return true;
	}