with (SceneJs) {

  var monkeyScene = scene(
    {},
    renderer({
                canvasId: 'mycanvas',
                clear : { depth : true, color : true}
            },
        /* A simple phong GLSL shader to render sub-nodes, with
           a single light source. This shader type only supports
           a one light source.
         */
        shader(
          { type: 'simple-shader' },

          lights(
            {
              lights: [
                {
                  pos: { x: -30.0, y: 30.0, z: -30.0 }
                }
              ]},

            /* Perspective transformation
             */
            perspective(
              {  fovy : 25.0, aspect : 1.0, near : 0.10, far : 300.0 },

              /* Viewing transform specifies eye position, looking
                 at the origin by default
               */
              lookAt(
                {
                  eye : { x: 0.0, y: 10.0, z: -15 },
                  up : { y: 1.0 }
                },

                /* Next, a modelling transform to orient our teapot
                   by a given angle.  See how this node takes a function
                   which creates its configuration object?  You can do
                   that when you want a node's configuration to be
                   evaluated dynamically at traversal-time. The function
                   takes a scope, which is SceneJS's mechanism for passing
                   variables down into a scene graph. Using the angle
                   variable on the scope, the function creates a
                   configuration that specifies a rotation about the X-axis.
                   Further down you'll see how we inject that angle
                   variable when we render the scene.
                 */
                rotate(function(scope) {
                  return {
                    angle: scope.get('angle'), y : 1.0
                  };
                },

                       /* Make our teapot nice and shiney
                        */
                       material({
                            ambient:  { r:0.2, g:0.2, b:0.5 },
                            diffuse:  { r:0.6, g:0.6, b:0.9 }
                       },
                                /* Teapot's geometry
                                 */
                                BlenderExport.Suzanne()
                               )
                      ) // rotate
              ) // lookAt
            ) // frustum
          ) // lights
        ) // shader
      ) // renderer
  ); // scene

    var rotationY = 0;

	function renderScene() {
		try {
			rotationY++;
			monkeyScene.render( {
				angle : rotationY
			}); // Don't allow lookat node's 'look' to equal its 'at'
		} catch (e) {
			if (e.message) {
				alert(e.message);
			} else {
				alert(e);
			}
			throw e;
		}
	}

	pInterval = setInterval(renderScene, 10);
}
