@Override
	public void travelTo(double x, double y) {
		travelToNearestIntersection();
		Delay.msDelay(2000);

		double destinationRow = calculateDestination(y);
		if (odo.getY() < destinationRow) {
			// Go Up
			turnTo(90);
		} else {
			// Go Down
			turnTo(270);
		}

		// Travel vertically loop (while not at destination row)
		while (!isAt(destinationRow, odo.getY())) {
			// If there is an obstacle within the next tile
			if (us.isObjectInRange(US_RANGE)) {
				avoidObstacle(x, y);
				return;
			}
			// move forward one tile
			advanceATile();
		}// end Travel vertically loop
		
		double destinationColumn = calculateDestination(x);
		if (odo.getX() < destinationColumn) {
			// Go Right
			turnTo(0);
		} else {
			// Go Left
			turnTo(180);
		}

		// Travel horizontally loop (while not at destination column)
		while (!isAt(destinationColumn, odo.getX())) {
			// If there is an obstacle within the next tile
			if (us.isObjectInRange(US_RANGE)) {
				avoidObstacle(x, y);
				return;
			}
			// move forward one tile
			advanceATile();
		}// end Travel horizontally loop

		simpleTravelTo(x, y);
	}// end travelTo