 		@tickCount = 0
 		@isRunning = yes
 		@pixelRatio = Bu.global.devicePixelRatio or 1
-		@dom = document.createElement 'canvas'
-		@context = @dom.getContext '2d'
 		@clipMeter = new ClipMeter() if ClipMeter?
 
-		# Recieve options
+		# Receive options
 		options = Bu.combineOptions arguments,
 			container: 'body'
 			background: '#eee'

			showBounds: no
			originAtCenter: no
			imageSmoothing: yes
		@[k] = options[k] for k in ['container', 'width', 'height', 'fps', 'showKeyPoints', 'showBounds']

		# Set DOM styles
		@fillParent = not Bu.isNumber options.width
		if not @fillParent
			@dom.style.width = @width + 'px'
			@dom.style.height = @height + 'px'
			@dom.width = @width * @pixelRatio
			@dom.height = @height * @pixelRatio
		@dom.style.cursor = options.cursor or 'default'
		@dom.style.boxSizing = 'content-box'
		@dom.style.background = options.background
		@dom.oncontextmenu = -> false


		@container = document.querySelector @container if Bu.isString @container
		if @fillParent and @container == document.body
			$('body').style('margin', 0).style('overflow', 'hidden');
			$('html, body').style('width', '100%').style('height', '100%')

		@context.textBaseline = 'top'
		@originAtCenter = options.originAtCenter
		@context.imageSmoothingEnabled = options.imageSmoothing


		onResize = =>
			canvasRatio = @dom.height / @dom.width
			containerRatio = @container.clientHeight / @container.clientWidth

			@dom.style.height = height + 'px'
			@render()

		if not @fillParent
			@dom.style.width = (@width / @pixelRatio) + 'px'
			@dom.style.height = (@height / @pixelRatio) + 'px'
			@dom.width = @width
			@dom.height = @height
		else
			@width = @container.clientWidth
			@height = @container.clientHeight
			Bu.global.window.addEventListener 'resize', onResize
			@dom.addEventListener 'DOMNodeInserted', onResize

		# Run the loop
		tick = =>
			if @isRunning
				@clipMeter.start() if @clipMeter?
				@render()
				@trigger 'update', @
				@tickCount += 1
				@clipMeter.tick() if @clipMeter?
			requestAnimationFrame tick
		tick()

		# Append <canvas> dom into the container
		appendDom = =>
			@container.appendChild @dom
		setTimeout appendDom, 1

		# Hook up with running components
		Bu.animationRunner.hookUp @
		Bu.dashFlowManager.hookUp @


	# Pause/continue/toggle the rendering loop
	pause: -> @isRunning = false
