private ArrayList<Integer> getNormalNeurons(int bestNeuron, double threshold) {
		TreeMap neighboorhood = null;
		Iterator it, innerIter = null;
		ArrayList<Integer> neuronsConsidered = new ArrayList<Integer>();
		ArrayList<Integer> nextNeurons = new ArrayList<Integer>();
		ArrayList<Integer> normalNeurons = new ArrayList<Integer>();

		int numberOfNormalNeurons = Controller.getConfig()
				.getNumberofNormalNeurons();
		int neighborNeuron, innerNeighborNeurons, distance = 0 ;

		double tmpDistance;

		neuronsConsidered.add(bestNeuron);

		while (normalNeurons.size() <= numberOfNormalNeurons && distance < 5) {
			for (int neuronConsidered : neuronsConsidered) {
				neighboorhood = topology.getNeighbours(neuronConsidered);
				it = neighboorhood.keySet().iterator();

				while (it.hasNext()) {
					neighborNeuron = (int) it.next();
					nextNeurons.add(neighborNeuron);
					neighboorhood = topology.getNeighbours(neighborNeuron);
					innerIter = neighboorhood.keySet().iterator();
					tmpDistance = 0;

					while (innerIter.hasNext()) {
						innerNeighborNeurons = (int) innerIter.next();
						tmpDistance += ComputationUtility.calculateDistance(
								networkModel.getNeuron(innerNeighborNeurons),
								networkModel.getNeuron(neighborNeuron));
					}

					if (tmpDistance < threshold) {
						normalNeurons.add(neighborNeuron);
						if (normalNeurons.size() == numberOfNormalNeurons)
							return normalNeurons;
					}
				}
			}

			if (nextNeurons.size() > 0) {
				neuronsConsidered = null;
				distance++;
				neuronsConsidered = (ArrayList<Integer>) nextNeurons.clone();
				nextNeurons.clear();
			} else
				break;
		}
		return normalNeurons;
	}