public void update(final Observable obj, final Object arg) {
        final String line = (String) arg;
        final String thisLine = line.substring(line.indexOf("Text [") + "Text [".length(), line.indexOf("]", line.indexOf("Text [")));

        if (thisLine.indexOf(E2E_SEND) < 0) {
            return;
        }

        if (thisLine.toLowerCase().indexOf("e2ec") >= 0) {
            return;
        }

        if (thisLine.toLowerCase().indexOf("e2ep") >= 0) {
            return;
        }

        if (thisLine.toLowerCase().indexOf("cluster_radio_receive") >= 0) {
            return;
        }


        final StringTokenizer stok = new StringTokenizer(thisLine, ";");
        stok.nextToken();
        final String fromNodeId = stok.nextToken();
        final String msgType = stok.nextToken();
        final String toNodeId = stok.nextToken();

        final VizNode fromNode = displayNode(fromNodeId);
        final VizNode toNode = displayNode(toNodeId);

        // Check if node should be ignored
        if ((fromNode == null) || (toNode == null)) {
            return;
        }

        final VizLink linkFwd = fromNode.getLink(toNode.getId());
        final VizLink linkRev = toNode.getLink(fromNode.getId());

        if (linkFwd != null) {
            fromNode.ucastEvent();
            fromNode.sendPacket(linkFwd, Color.RED.getRGB(), 20, fromNode, toNode);

        } else if (linkRev != null) {
            fromNode.ucastEvent();
            fromNode.sendPacket(linkRev, Color.RED.getRGB(), 20, fromNode, toNode);
        }
    }