public boolean isLegalMove(double newBearing) {
		// because 0 and 360 are the same, this makes things a little easier
		if (newBearing == 360) newBearing = 0;
		
		// make sure it's in bounds
		if (newBearing < -2 || newBearing > 360) {
			System.err.println("ERROR! " + newBearing + " is not a legal bearing");
			return false;
		}
		
		// if the plane is taking off and we made it here, that's fine
		if (bearing == -1) return true;
		
		// here is a regular situation
		if (bearing < 360 - MAX_BEARING_CHANGE && bearing > MAX_BEARING_CHANGE) {
			if (Math.abs(bearing - newBearing) > MAX_BEARING_CHANGE) {
				System.err.println("ERROR! " + newBearing + " is too much of a change from old bearing of " + bearing);
				return false;
			}
			else return true;
		}
		// here's if they're close to the 0/360 border
		else {
			// if still within the max change, then it's fine
			if (Math.abs(bearing-newBearing) <= MAX_BEARING_CHANGE) return true;
			// otherwise, they must have crossed the border
			else {
				double diff = Math.abs(bearing-newBearing);
				if (360 - diff <= MAX_BEARING_CHANGE) return true;
				else {
					System.err.println("ERROR! " + newBearing + " is too much of a change from old bearing of " + bearing);
					return false;
				}
			}
		}
	}