private String findVal(Node[] state, Node myNode, int index) {
		String val;
		int id = myNode.getId();
		int ring = id % 4;			// ring = right value
		int left = 0;
		int mod = 0;
		int size = 4;
		int[] ids;
		
		// 0 = diagonal TL-BR, 1 = horizontal, 2 = diagonal BL-TR, 3 = vertical
		switch(index) {
		
			// TL-BR
			case 0:
				left = 3 - ring;
				mod = 3;
				break;

			// horizontal
			case 1:
				left = 3;
				mod = 4;
				size = 7;
				break;
			
			// BL-TR
			case 2:
				left = ring;
				mod = 5;
				break;
			
			// vertical
			case 3:
				left = 3 - ring;
				mod = -1;
				
			default:
		}

		ids = new int[size];
		// find left-most
		ids[0] = id - (mod * left);
		if (ids[0] < 0)
			ids[0] = 48 + ids[0];
		val = String.valueOf(state[ids[0]].getChar());
		
		// find next
		for (int counter = 1; counter < size; counter++) {
			ids[counter] = ids[counter - 1] + mod;
			if (ids[counter] > 47)
				ids[counter] = ids[counter] - 48;
			val = val + String.valueOf(state[ids[counter]].getChar());
		}
		
		return val;
	}