protected void getCloseCreatures() {
	Thread creatureRadarThread = new Thread(new Runnable() {
		@Override
		public void run() {

		    try {// wait until the plants align properly
			Thread.sleep(80);
		    } catch (InterruptedException e) {
			e.printStackTrace();
		    }

		    // True if this creature is alive
		    while (isAlive()) {

			// clone the Grid.plants, the centralised repository of
			// plants, so there will less concurrent conflict

			synchronized (Grid.simpleCreatures) {
			    List<SimpleCreature> cre = Collections
				.synchronizedList(Grid.simpleCreatures);
			    for (Iterator<SimpleCreature> iterator = cre.iterator(); iterator
				     .hasNext();) {

				SimpleCreature creature = iterator.next();

				Point pos = creature.getPosition();

				if (isInRange(pos)
				    && creature.getCreautreNumber() != getCreautreNumber()) {

				    if (creaturesSeen != null && creature != null
					&& !creaturesSeen.contains(creature)) {
					if (creaturesSeen.size() > CREATURE_MEMORY) {
					    creaturesSeen.removeFirst();
					}
					creaturesSeen.add(creature);
				    }
				}
			    }
			}
		    }
		}
	    });
	creatureRadarThread.setDaemon(true);
	creatureRadarThread.start();
    }