 
 		animator[AnimationLoopIndexKey] = AnimationLoop._animators.push animator
 		animator.emit "start"
-		AnimationLoop._start()
+
+		Utils.domComplete ->
+			AnimationLoop._start()
 
 	remove: (animator) ->
-		AnimationLoop._animators = _.without AnimationLoop._animators, animator
+		index = AnimationLoop._animators.indexOf(animator)
+		AnimationLoop._animators[index] = null
 		animator.emit "stop"
 
 exports.AnimationLoop = AnimationLoop

		# 	console.log "AnimationLoop._start"

		AnimationLoop._frameCounter++
		
		time  = Utils.getTime()
		delta = time - AnimationLoop._time

		AnimationLoop._sessionTime += delta


		# 	"animators:#{AnimationLoop._animators.length}"
		# ].join " "

		AnimationLoop._counter = 0

		index = 0

		for animator in AnimationLoop._animators

			index++

			if not animator
				continue

			AnimationLoop._counter++

			animator.emit("tick", animator.next(delta, fps))

			if animator.finished()
				animator.emit "tick", 1 # This makes sure we and at a perfect value
				animator.emit "end"
				animator.emit "stop"

				AnimationLoop._animators[index] = null

		# This means there were no animators anymore so we can safely exit
		# and reset the animators array.
		if AnimationLoop._counter is 0
			AnimationLoop._animators.length = 0

		window.requestAnimationFrame AnimationLoop._tick

