private synchronized void adjust() {
    // Generate random position in graph space
    tempISOM = new ISOMVertexData();
    tempXYD = new Coordinates();

    // creates a new XY data location
    tempXYD.setX(10 + Math.random() * getCurrentSize().getWidth());
    tempXYD.setY(10 + Math.random() * getCurrentSize().getHeight());

    // Get closest vertex to random position
    Vertex winner = elementAccessor.getVertex(tempXYD.getX(), tempXYD.getY());

    while (true) {
      try {
        for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext(); ) {
          Vertex v = (Vertex) iter.next();
          ISOMVertexData ivd = getISOMVertexData(v);
          ivd.distance = 0;
          ivd.visited = false;
        }
        break;
      } catch (ConcurrentModificationException cme) {
      }
    }
    adjustVertex(winner);
  }