public void expandNode(final Node n) {

        new Thread() {

            public void run() {

                synchronized (LocalityUtils.this) {

                    if (!locality.getCompleteEltSet().contains(n)) return;                        

                    tgPanel.stopDamper();

                    for(int i=0;i<n.edgeNum();i++) {

                        Node newNode = n.edgeAt(i).getOtherEndpt(n);

                        if (!locality.contains(newNode)) {

                            newNode.justMadeLocal = true;

                            try {

                                locality.addNodeWithEdges(newNode);

                                Thread.currentThread().sleep(50); 

                            } catch ( TGException tge ) {

                                System.err.println("TGException: " + tge.getMessage());

                            } catch ( InterruptedException ex ) {}         

                        }

                        else if (!locality.contains(n.edgeAt(i))) {

                            locality.addEdge(n.edgeAt(i));

                        }

                    }

                    try { Thread.currentThread().sleep(200); } 

                    catch (InterruptedException ex) {}         

                    unmarkNewAdditions();

                    tgPanel.resetDamper();

                }

            }

        }.start();

    }