     return
 
   update: ->
-    offset = Shady.MESH.depth / 2
+    offset = @rendering.mesh.depth / 2
 
     # Update bounds
-    FSS.Vector3.copy Shady.LIGHT.bounds, @center
-    FSS.Vector3.multiplyScalar Shady.LIGHT.bounds, Shady.LIGHT.xyScalar
+    FSS.Vector3.copy @rendering.light.bounds, @center
+    FSS.Vector3.multiplyScalar @rendering.light.bounds, @rendering.light.xyScalar
 
     # Update attractor
-    FSS.Vector3.setZ @attractor, Shady.LIGHT.zOffset
+    FSS.Vector3.setZ @attractor, @rendering.light.zOffset
 
     # Overwrite the attractor position
-    if Shady.LIGHT.autopilot
-      ox = Math.sin Shady.LIGHT.step[0] * @now * Shady.LIGHT.speed
-      oy = Math.cos Shady.LIGHT.step[1] * @now * Shady.LIGHT.speed
+    if @rendering.light.autopilot
+      ox = Math.sin @rendering.light.step[0] * @now * @rendering.light.speed
+      oy = Math.cos @rendering.light.step[1] * @now * @rendering.light.speed
 
       FSS.Vector3.set(
         @attractor
-        Shady.LIGHT.bounds[0] * ox
-        Shady.LIGHT.bounds[1] * oy
-        Shady.LIGHT.zOffset
+        @rendering.light.bounds[0] * ox
+        @rendering.light.bounds[1] * oy
+        @rendering.light.zOffset
       )
 
     # Animate lights
-    for light in @scene.lights
+    l = @scene.lights.length - 1
+
+    while l >= 0
+      light = @scene.lights[l]
+
       # Reset the z-position of the light
-      FSS.Vector3.setZ light.position, Shady.LIGHT.zOffset
+      FSS.Vector3.setZ light.position, @rendering.light.zOffset
 
       # Calculate the force Luke!
-      d = Math.clamp FSS.Vector3.distanceSquared(light.position, @attractor), Shady.LIGHT.minDistance, Shady.LIGHT.maxDistance
-
-      f = Shady.LIGHT.gravity * light.mass / d
+      d = Math.clamp FSS.Vector3.distanceSquared(light.position, @attractor), @rendering.light.minDistance, @rendering.light.maxDistance
+
+      f = @rendering.light.gravity * light.mass / d
 
       FSS.Vector3.subtractVectors light.force, @attractor, light.position
       FSS.Vector3.normalise light.force


      vertex.time = Math.randomInRange 0, Math.PIM2

    return

  createLights = ->
    for light in @scene.lights
      @scene.remove light

    do @renderer.clear

    for i in [0...Shady.LIGHT.count]
      light = new FSS.Light Shady.LIGHT.ambient, Shady.LIGHT.diffuse

      light.ambientHex = do light.ambient.format
      light.diffuseHex = do light.diffuse.format

  rendering:
    renderer: @WEBGL

    mesh:
      width: 1.0
      height: 1.0
      depth: 5
      segments: 16
      slices: 8
      xRange: 1.6
      yRange: 0.1
      zRange: 1.0
      ambient: '#555555'
      diffuse: '#FFFFFF'
      speed: 0.002

    light:
      count: 2
      xyScalar: 1
      zOffset: 100
      ambient: '#880066'
      diffuse: '#FF8800'
      speed: 0.001
      gravity: 1200
      dampening: 0.95
      minLimit: 10
      maxLimit: null
      minDistance: 20
      maxDistance: 400
      autopilot: true
      draw: true
      bounds: do FSS.Vector3.create
      step: FSS.Vector3.create Math.randomInRange(0.2, 1.0), Math.randomInRange(0.2, 1.0), Math.randomInRange(0.2, 1.0)

  # === Public ===

  constructor: (element, options) ->
