 						quad.point.y += y
 				x1 > nx2 or x2 < nx1 or y1 > ny2 or y2 < ny1
 
+	init: =>
+		@root = NODES[0]
+		@root.r = 0
+		@root.fixed = true
+
+		@svg = d3.select( SELECTOR_CONTAINER )
+			 .append("svg")
+			 .attr("preserveAspectRatio", "xMinYMin meet")
+			 .attr("viewBox", "0 0 " + W + " " + H)
+			 .classed("svg-content", true)
+
+		@svg.selectAll("circle")
+			.data( NODES )
+			.enter()
+			.append("svg:circle")
+			.attr("r", (d) -> d.r )
+			.style("fill", (d, i) -> d.fill )
+
+
 	destroy: ->
 		super()

		{ r: 10, fill: "#006457" },
		{ r: 10, fill: "#006457" },
		{ r: 10, fill: "#006457" },
		# 3 of these bad boys
		{ r: 10, fill: "#83aa08" },
		{ r: 10, fill: "#83aa08" },
		{ r: 10, fill: "#83aa08" },
		# 4 of these bad boys
		{ r: 10, fill: "#daa500" },
		{ r: 10, fill: "#daa500" },
		{ r: 10, fill: "#daa500" },
		{ r: 10, fill: "#daa500" },
		# 2 of these bad boys
		{ r: 10, fill: "#f17e0b" }
		{ r: 10, fill: "#f17e0b" }
	]

	W = 600

				.attr("cy", (d) -> d.y )
		)

		@svg.on("mousemove", () ->
			onInteract(this)
		)
		@svg.on("touchmove", () ->
		  onInteract(this)
		)

		that = this
		onInteract = (arg) ->
			p1 = d3.mouse(arg)
			that.root.px = p1[0]
			that.root.py = p1[1]
			that.force.resume()
			return

		collide = (node) ->
			r = node.r + 0
			nx1 = node.x - r
			nx2 = node.x + r
			ny1 = node.y - r
