private synchronized void populateRoot() {
        if (nodes.get("/") == null) {
            try {
                System.out.println("[" + Thread.currentThread()
                        + "Populating root..");
                Stat stat = new Stat();
                ZVNodeImpl root = new ZVNodeImpl("/", zk.getData("/", watcher,
                        stat));
                root.setStat(stat);
                nodes.put("/", root);
                children.put(root, new ArrayList<ZVNodeImpl>());
                fireNodeCreated(root);
                populateChildren("/");
            } catch (KeeperException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }