docs: function(json, opt) {
          var viz = this.viz;
          var options = $.merge(this.options, viz.controller, opt), root = viz.root;
          var graph;
          viz.root = opt.id || viz.root;
          switch(options.type) {
              case 'nothing':
                  graph = viz.construct(json);
                  graph.eachNode(function(elem) {
                      elem.eachAdjacency(function(adj) {
                          viz.graph.addAdjacence(adj.nodeFrom, adj.nodeTo, adj.data);
                      });
                  });
                  break;
              
              case 'replot':
                  viz.refresh(true);
                  this.sum(json, { type: 'nothing' });
                  viz.refresh(true);
                  break;
              
              case 'fade:seq': case 'fade': case 'fade:con':
                  that = this;
                  graph = viz.construct(json);
  
                  //set alpha to 0 for nodes to add.
                  var fadeEdges = this.preprocessSum(graph);
                  var modes = !fadeEdges? ['node-property:alpha'] : ['node-property:alpha', 'edge-property:alpha'];
                  viz.reposition();
                  if(options.type != 'fade:con') {
                      viz.fx.animate($.merge(options, {
                          modes: ['linear'],
                          onComplete: function() {
                              viz.fx.animate($.merge(options, {
                                  modes: modes,
                                  onComplete: function() {
                                      options.onComplete();
                                  }
                              }));
                          }
                      }));
                  } else {
                      viz.graph.eachNode(function(elem) {
                          if (elem.id != root && elem.pos.getp().equals(Polar.KER)) {
                            elem.pos.set(elem.endPos); elem.startPos.set(elem.endPos);
                          }
                      });
                      viz.fx.animate($.merge(options, {
                          modes: ['linear'].concat(modes)
                      }));
                  }
                  break;
  
              default: this.doError();
          }
      }