anchor.diff:  
     }
   
  -  createText() {  
  -  
  -    textGeo = new TextGeometry( text, 
  +  createText() {
  +
  +    textGeo = new TextGeometry( text,
   
         height,
         false,
  
positive.code: 
      event.preventDefault();
  
      mouseMoveStream =document.onMouseMove.listen( onDocumentMouseMove );
      mouseUpStream = document.onMouseUp.listen( onDocumentMouseUp );
      mouseOutStream = document.onMouseOut.listen( onDocumentMouseOut );
  
      mouseXOnMouseDown = event.clientX - windowHalfX;
      targetRotationOnMouseDown = targetRotation;
  
negative.code:       })));
  
    void run() {
  
      loadFonts().then((_) {
        init();
        animate(0);
      });
    }
  
    capitalize( txt ) {
  
      return txt.substring( 0, 1 ).toUpperCase() + txt.substring( 1 );
    }
  
    void init() {
  
      container = new Element.tag('div');
  
      document.body.nodes.add( container );
  
      // CAMERA
  
      camera = new PerspectiveCamera( 30.0, window.innerWidth / window.innerHeight, 1.0, 1500.0 )
      ..position.setValues( 0.0, 400.0, 700.0 );
  
      cameraTarget = new Vector3( 0.0, 150.0, 0.0 );
  
      // SCENE
  
      scene = new Scene()
      ..fog = new FogLinear ( 0x000000, 250.0, 1400.0 );
  
      // LIGHTS
  
      var dirLight = new DirectionalLight( 0xffffff, 0.125 )
      ..position.setValues( 0.0, 0.0, 1.0 ).normalize();
      scene.add( dirLight );
  
      var pointLight = new PointLight( 0xffffff, intensity: 1.5 )
      ..position.setValues( 0.0, 100.0, 90.0 );
      scene.add( pointLight );
  
      //text = capitalize( font ) + " " + capitalize( weight );
      //text = "abcdefghijklmnopqrstuvwxyz0123456789";
      //text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  
       pointLight.color.setHSL( new Math.Random().nextDouble(), 1, 0.5 );
  
       material = new MeshFaceMaterial( [
         new MeshPhongMaterial( color: 0xffffff, shading: FlatShading ), // front
         new MeshPhongMaterial( color: 0xffffff, shading: SmoothShading ) // side
       ] );
  
      parent = new Object3D()..position.y = 100.0;
  
      scene.add( parent );
  
      createText();
  
      var plane = new Mesh(
          new PlaneGeometry( 10000.0, 10000.0 ),
          new MeshBasicMaterial( color: 0xffffff, opacity: 0.5, transparent: true ))
      ..position.y = 100.0
      ..rotation.x = - Math.PI / 2.0;
      scene.add( plane );
  
      // RENDERER
  
      renderer = new WebGLRenderer( antialias: true )
      ..setSize( window.innerWidth, window.innerHeight )
      ..setClearColor( new Color(0x000000), 1 );
  
      container.nodes.add( renderer.domElement );
  
      // EVENTS
  
      document
      ..onMouseDown.listen( onDocumentMouseDown )
      ..onTouchStart.listen( onDocumentTouchStart )
      ..onTouchMove.listen( onDocumentTouchMove )
      ..onKeyPress.listen( onDocumentKeyPress )
      ..onKeyDown.listen( onDocumentKeyDown );
  
      window.onResize.listen( onWindowResize );
  
    }
  
    onWindowResize(e) {
  
      windowHalfX = window.innerWidth / 2;
      windowHalfY = window.innerHeight / 2;
  
      camera.aspect = window.innerWidth / window.innerHeight;
      camera.updateProjectionMatrix();
  
      renderer.setSize( window.innerWidth, window.innerHeight );
  
    }
  
    onDocumentKeyDown( event ) {
  
      if ( firstLetter ) {
  
        firstLetter = false;
        text = "";
  
      }
  
      var keyCode = event.keyCode;
  
      // backspace
  
      if ( keyCode == 8 ) {
  
        event.preventDefault();
  
        text = text.substring( 0, text.length - 1 );
        refreshText();
  
        return false;
  
      }
  
    }
  
    onDocumentKeyPress( event ) {
  