public ArrayList<PuzzleChar> getNeighbours(PuzzleChar pChar) {
		ArrayList<PuzzleChar> neighbours = new ArrayList<PuzzleChar>();
		
		for(int ri = -1; ri <= 1; ri++)
		{
			for (int ci  = -1; ci <= 1; ci++)
			{
				int nRow = pChar.loc.row + ri;
				int nCol = pChar.loc.col  + ci;
				
				if ( nRow < 0 || nRow >= height())
					continue;
				
				if ( nCol <0 || nCol >= width())
					continue;
				
				if (nRow == pChar.loc.row && nCol == pChar.loc.col)
					continue;
				
				// TODO: move to factory of PuzzleChars
				// no need to create a new one
				Loc loc = new Loc(nRow, nCol);
				neighbours.add(new PuzzleChar(field[nRow][nCol], loc));
			}
		}
		return neighbours;
	};