public Coordinate move(String commands) {
		
		move:
		for(int i = 0; i < commands.length(); i++) {
			Coordinate newPosition;
			
			switch(commands.charAt(i)) {
				case 'l':
					turnLeft();
					break;
				case 'r':
					turnRight();
					break;
				case 'f':
					newPosition = grid.getNewPosition(currentPosition, moveForward());
					
					if(grid.isAvailable(newPosition)) {
						currentPosition = newPosition;
					} else {
						reportObstacle();
						break move;
					}
					
					break;
				case 'b':
					newPosition = grid.getNewPosition(currentPosition, moveBackward());
					
					if(grid.isAvailable(newPosition)) {
						currentPosition = newPosition;
					} else {
						reportObstacle();
						break move;
					}
					
					break;
			}
		
		}
		
		return currentPosition;
	}