anchor.diff:  
   </script>
   
  +<%= button_to "Clear Bubbles", clearbev_path, :class => "clearbev", :remote => true, :method => :delete %>
  +<%= button_to "Refresh Bubbles", beverage_path, :method => :get %>
  
positive.code: //   console.log(child);
  // }
  
  // Returns a flattened hierarchy containing all leaf nodes under the root.
  function classes(root) {
    var classes = [];
  
    function recurse(name, node) {
      if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
      else classes.push({packageName: name, className: node.name, value: node.size});
    }
  
    recurse(null, root);
    return {children: classes};
  }
  
  d3.select(self.frameElement).style("height", diameter + "px");
  
  // end d3
  
  
negative.code:   return location.reload();
  });
  
  var SIZE = 800;
  var DATA = 
  
  var bubble = d3.layout.pack()
    .sort(null)
    .size([SIZE, SIZE])
    .padding(1.5)
    .value(function(d) { return d.size; } );
  
  var svg = d3.select('body')
    .append('svg')
    .attr('width', SIZE)
    .attr('height', SIZE);
  
  var color = d3.scale.category20();
  
  function update (data){
  
    var data = bubble.nodes(data).filter( function(d) { return !d.children; });
  
    var node = svg.selectAll('.node')
      .data(data, function(d)  { return d.name; });
  
    //ENTER
    var enter = node.enter().append('g')
      .attr('class', 'node')
      .attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; });
  
    enter.append('circle')
      .attr('r', 0)
      .style('fill', function(d) { return color(d.name); });
    enter.append('text')
      .style('opacity', 0)
      .style ('fill', 'black')
      .style('text-anchor', 'middle')
      .text(function(d) { return d.name; });
  
    // UPDATE
    var update = node.transition()
      .attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; });
    
    update.select('circle')
      .attr('r', function(d) { return d.r; });
  
    update.select('text')
      .style('opacity', 1);
  
    // EXIT
    var exit = node.exit()
      .transition()
      .remove()
    
    exit.select('circle').attr('r', 0);
    exit.select('text').style('opacity', 0);
  
  }
  
  update(DATA);
  
  setTimeout(function() {
    d3.json("beverage.json?after=", function(error, root) { 
      update(root);
    });
  }, 1000);
  
  // setTimeout(function() {
  //   DATA.children.pop();    // removes wine from JSON
  //   update(DATA);
  // }, 2000);
  
  // setTimeout(function() {
  //   DATA.children.push({name: "espresso", size: 200});    // removes wine from JSON
  //   update(DATA);
  // }, 3000);
  
  
  // function transitionNodes() {
  //   var child = svg.selectAll(".node")
  