private boolean horizontalMove(int fromX, int toX, int y) {
		Board board = getBoard();
		// define the direction by coordinates
		boolean isRightDirection = toX >= fromX;
		
		// left to right
		if (isRightDirection) {
			for (int i = fromX; i <= toX; i++) {
				if (exitFlag || Thread.currentThread().isInterrupted()) return false;
				
				// invert cells
				board.setCell(board.getCell(i, y) == Cell.Empty ? Cell.Full : Cell.Empty, i, y);
				fireBoardChanged(board);
				sleep(ANIMATION_DELAY);
			}
			// right to left
		} else {
			for (int i = fromX; i >= toX; i--) {
				if (exitFlag || Thread.currentThread().isInterrupted()) return false;
				
				// invert cells
				board.setCell(board.getCell(i, y) == Cell.Empty ? Cell.Full : Cell.Empty, i, y);
				fireBoardChanged(board);
				sleep(ANIMATION_DELAY);
			}
		}
		return true;
	}