diff --git a/public/index.html b/public/index.html
index 6245b386928a2af327d13146bd5448bf52d574c7..b8be792b0d032c54217a8149a56089f927ee5daf 100644
--- a/public/index.html
+++ b/public/index.html
@@ -4,16 +4,18 @@
   <meta charset="UTF-8">
   <meta name="viewport"
         content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-  <title>Cube Demo</title>
+  <title>Hit to Place Demo</title>
 
   <!-- three.js -->
   <script src="https://unpkg.com/three@0.126.0/build/three.js"></script>
+
+  <script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script>
 </head>
 <body>
 
 <!-- Starting an immersive WebXR session requires user interaction.
     We start this one with a simple button. -->
-<button onclick="activateXR()">Start Cube Demo</button>
+<button onclick="activateXR()">Start Hit to Place Demo</button>
 <script>
 async function activateXR() {
   // Add a canvas element and initialize a WebGL context that is compatible with WebXR.
@@ -23,67 +25,31 @@ async function activateXR() {
 
   const scene = new THREE.Scene();
 
+  const directionalLight = new THREE.DirectionalLight(0xffffff, 1.0);
+  directionalLight.position.set(10, 15, 10);
+  scene.add(directionalLight);
 
+// Set up the WebGLRenderer, which handles rendering to the session's base layer.
+const renderer = new THREE.WebGLRenderer({
+  alpha: true,
+  preserveDrawingBuffer: true,
+  canvas: canvas,
+  context: gl
+});
+renderer.autoClear = false;
 
-// Enable shadows in the renderer.
-renderer.shadowMap.enabled = true;
-
-// Create the cube and add it to the demo scene.
-// const cubeGeometry = new THREE.BoxBufferGeometry(0.5, 0.5, 0.5);
-// const cubeMaterials = [
-//   new THREE.MeshLambertMaterial({ color: 0xff0000 }), // Red
-//   new THREE.MeshLambertMaterial({ color: 0x0000ff }), // Blue
-//   new THREE.MeshLambertMaterial({ color: 0x00ff00 }), // Green
-//   new THREE.MeshLambertMaterial({ color: 0xff00ff }), // Magenta
-//   new THREE.MeshLambertMaterial({ color: 0x00ffff }), // Cyan
-//   new THREE.MeshLambertMaterial({ color: 0xffff00 })  // Yellow
-// ];
-// const cube = new THREE.Mesh(cubeGeometry, cubeMaterials);
-// cube.position.set(0, 0, -1);
-// cube.castShadow = true; // Enable shadow casting
-// scene.add(cube);
-
-
-// // Create a sphere geometry.
-// const sphereGeometry = new THREE.SphereBufferGeometry(0.3, 32, 32); // Adjust the radius and other parameters as needed.
-
-// // Create a material for the sphere (you can customize the color).
-// const sphereMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
-
-// // Create the sphere and add it to the scene.
-// const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
-// sphere.position.set(1, 0, -1); // Position the sphere next to the cube.
-// scene.add(sphere);
-
-const scene = new THREE.Scene();
-
-const directionalLight = new THREE.DirectionalLight(0xffffff, 0.3);
-directionalLight.position.set(10, 15, 10);
-scene.add(directionalLight);
+// The API directly updates the camera matrices.
+// Disable matrix auto updates so three.js doesn't attempt
+// to handle the matrices independently.
+const camera = new THREE.PerspectiveCamera();
+camera.matrixAutoUpdate = false;
 
+// Initialize a WebXR session using "immersive-ar".
 const session = await navigator.xr.requestSession("immersive-ar", {requiredFeatures: ['hit-test']});
-
-<!-- three.js -->
-<script src="https://unpkg.com/three@0.126.0/build/three.js"></script>
-
-<script src="https://unpkg.com/three@0.126.0/examples/js/loaders/GLTFLoader.js"></script>
-
-const loader = new THREE.GLTFLoader();
-let reticle;
-loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/reticle/reticle.gltf", function(gltf) {
-  reticle = gltf.scene;
-  reticle.visible = false;
-  scene.add(reticle);
-})
-
-let flower;
-loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/sunflower/sunflower.gltf", function(gltf) {
-  flower = gltf.scene;
+session.updateRenderState({
+  baseLayer: new XRWebGLLayer(session, gl)
 });
 
-// Create a render loop that allows us to draw on the AR view.
-const onXRFrame = (time, frame) => {
-
 // A 'local' reference space has a native origin that is located
 // near the viewer's position at the time the session was created.
 const referenceSpace = await session.requestReferenceSpace('local');
@@ -93,16 +59,16 @@ const viewerSpace = await session.requestReferenceSpace('viewer');
 // Perform hit testing using the viewer as origin.
 const hitTestSource = await session.requestHitTestSource({ space: viewerSpace });
 
-camera.projectionMatrix.fromArray(view.projectionMatrix);
-camera.updateMatrixWorld(true);
 
-const hitTestResults = frame.getHitTestResults(hitTestSource);
-if (hitTestResults.length > 0 && reticle) {
-  const hitPose = hitTestResults[0].getPose(referenceSpace);
-  reticle.visible = true;
-  reticle.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z)
-  reticle.updateMatrixWorld(true);
-}
+
+
+const loader = new THREE.GLTFLoader();
+let reticle;
+loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/reticle/reticle.gltf", function(gltf) {
+  reticle = gltf.scene;
+  reticle.visible = false;
+  scene.add(reticle);
+})
 
 let flower;
 loader.load("https://immersive-web.github.io/webxr-samples/media/gltf/sunflower/sunflower.gltf", function(gltf) {
@@ -117,32 +83,6 @@ session.addEventListener("select", (event) => {
   }
 });
 
-
-// Set up the WebGLRenderer, which handles rendering to the session's base layer.
-const renderer = new THREE.WebGLRenderer({
-  alpha: true,
-  preserveDrawingBuffer: true,
-  canvas: canvas,
-  context: gl
-});
-renderer.autoClear = false;
-
-// The API directly updates the camera matrices.
-// Disable matrix auto updates so three.js doesn't attempt
-// to handle the matrices independently.
-const camera = new THREE.PerspectiveCamera();
-camera.matrixAutoUpdate = false;
-
-// Initialize a WebXR session using "immersive-ar".
-const session = await navigator.xr.requestSession("immersive-ar");
-session.updateRenderState({
-  baseLayer: new XRWebGLLayer(session, gl)
-});
-
-// A 'local' reference space has a native origin that is located
-// near the viewer's position at the time the session was created.
-const referenceSpace = await session.requestReferenceSpace('local');
-
 // Create a render loop that allows us to draw on the AR view.
 const onXRFrame = (time, frame) => {
   // Queue up the next draw request.
@@ -166,6 +106,16 @@ const onXRFrame = (time, frame) => {
     camera.projectionMatrix.fromArray(view.projectionMatrix);
     camera.updateMatrixWorld(true);
 
+    const hitTestResults = frame.getHitTestResults(hitTestSource);
+    if (hitTestResults.length > 0 && reticle) {
+      const hitPose = hitTestResults[0].getPose(referenceSpace);
+      reticle.visible = true;
+      reticle.position.set(hitPose.transform.position.x, hitPose.transform.position.y, hitPose.transform.position.z)
+      reticle.updateMatrixWorld(true);
+    }
+
+    
+
     // Render the scene with THREE.WebGLRenderer.
     renderer.render(scene, camera)
   }
@@ -174,6 +124,7 @@ session.requestAnimationFrame(onXRFrame);
 
 
 
+
 }
 </script>
 </body>