diff --git a/index.html b/index.html
index 1aaf5d7e44031c4f6ae0e6e9874698a12a164845..7a06ea9c3d74404f91a4f74102420e42e3b56a23 100644
--- a/index.html
+++ b/index.html
@@ -11,10 +11,6 @@
 
   <link rel="stylesheet" href="src/style.css" />
   <link rel="icon" type="image/svg+xml" href="favicon.svg" />
-
-  <link rel="preconnect" href="https://fonts.googleapis.com">
-  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
-  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap" rel="stylesheet">
 </head>
 
 <body>
diff --git a/src/init.ts b/src/init.ts
index 547bad5a0f38b6b857906471aadbb38633e026be..52525248e8e83c3d02866dd006187b7c062138c7 100644
--- a/src/init.ts
+++ b/src/init.ts
@@ -16,23 +16,33 @@ function init() {
     const simulationLink = document.querySelector("#simulation") as HTMLAnchorElement;
 
     // actions to be performed when the link is clicked
-    bezierLink.addEventListener("click", () => {
+    
+    const bezierFunc = () => {
         sceneElement.classList.remove("hidden");
         mainElement.classList.add("hidden");
         Main.demos(Main.examples["bezier"]);
-    });
+    };
 
-    quaternionLink.addEventListener("click", () => {
+    const quaternionFunc = () => {
         sceneElement.classList.remove("hidden");
         mainElement.classList.add("hidden");
         Main.demos(Main.examples["quaternion"]);
-    });
+    };
 
-    simulationLink.addEventListener("click", () => {
+    const simulationFunc = () => {
         sceneElement.classList.add("hidden");
         mainElement.classList.remove("hidden");
         // TODO: add simulation
-    });
+    };
+
+    bezierLink.addEventListener("click", bezierFunc);
+
+    quaternionLink.addEventListener("click", quaternionFunc);
+
+    simulationLink.addEventListener("click", simulationFunc);
+
+    quaternionFunc();
+    return;
 
     // start animation
     RotCube.init();
diff --git a/src/quaternion/Quaternion.ts b/src/quaternion/Quaternion.ts
index 9e151c8a7aa2f336021fd7c28adfc39a8bd822cd..9a8fe24c841b4c580cc24fd5d26206bf3bddc104 100644
--- a/src/quaternion/Quaternion.ts
+++ b/src/quaternion/Quaternion.ts
@@ -51,7 +51,7 @@ export class Quaternion {
         this._w = w;
 
         const length = Math.sqrt(x * x + y * y + z * z + w * w);
-        if (this._keepUnitQuaternion && length !== 0) {
+        if (this._keepUnitQuaternion && length > 0) {
             this._x = x / length;
             this._y = y / length;
             this._z = z / length;
diff --git a/src/quaternion/RotationObject.ts b/src/quaternion/RotationObject.ts
index 4baf82be1cfbb28ba77139559c209279f50cb67f..cf2487e5ca3bbc14315a2c2330a491f65c242056 100644
--- a/src/quaternion/RotationObject.ts
+++ b/src/quaternion/RotationObject.ts
@@ -27,11 +27,13 @@ export class RotationObject implements Updatable, Modifiable {
      * Updates the qworking quaternion which is applied to the mesh
      * qa and qb are used to calculate the quaternion and left in their original state
      */
-    update(): void {
+    update(throughWorking: boolean = false): void {
 
-        if (this.SLERP) this.qworking = Quaternion.slerp(this.qa, this.qb, this.t);
-        else if (this.MODE === "Single") this.qworking = this.qa.clone();
-        else this.qworking = Quaternion.multiply(this.qa, this.qb);
+        if (!throughWorking) {
+            if (this.SLERP) this.qworking = Quaternion.slerp(this.qa, this.qb, this.t);
+            else if (this.MODE === "Single") this.qworking = this.qa.clone();
+            else this.qworking = Quaternion.multiply(this.qa, this.qb);
+        }
 
         if (this._mesh) {
             this._mesh.setRotationFromMatrix(this.qworking.toMatrix());
@@ -72,6 +74,7 @@ export class RotationObject implements Updatable, Modifiable {
         else {
             folder.add(this, "MODE", ["Single", "Multi"]).onFinishChange(() => {
                 this.createElement(gui);
+                this.update()
             });
         }
 
@@ -82,31 +85,35 @@ export class RotationObject implements Updatable, Modifiable {
         const range: number = 1;
         const step: number = .01;
 
-        const func = (): void => { this.update(); }
-
-        if (this.MODE === "Single" || this.MODE === "Multi") {
-
-            const fqa = folder.addFolder(this.MODE === "Single" ? "Quaternion" : "Quaternion A");
-            fqa.open();
-            fqa.add(this.qa, "keepUnitQuaternion").onChange(func);
-            fqa.add(this.qa, "x", -range, range, step).onChange(func);
-            fqa.add(this.qa, "y", -range, range, step).onChange(func);
-            fqa.add(this.qa, "z", -range, range, step).onChange(func);
-            fqa.add(this.qa, "w", -range, range, step).onChange(func);
-
-        }
+        const fqa = folder.addFolder(this.MODE === "Single" ? "Quaternion" : "Quaternion A");
+        fqa.open();
+        fqa.add(this.qa, "keepUnitQuaternion").name("auto. value").onChange(() => { this.update() });
+        fqa.add(this, "showRotAxisQa").name("show rot. axis").onChange(() => { this.update() });
+        fqa.add(this.qa, "x", -range, range, step).listen().onChange(() => { this.update() });
+        fqa.add(this.qa, "y", -range, range, step).listen().onChange(() => { this.update() });
+        fqa.add(this.qa, "z", -range, range, step).listen().onChange(() => { this.update() });
+        fqa.add(this.qa, "w", -range, range, step).listen().onChange(() => { this.update() });
 
         if (this.MODE === "Multi") {
 
             const fqb = folder.addFolder("Quaternion B");
             fqb.open();
-            fqb.add(this.qb, "keepUnitQuaternion").onChange(func);
-            fqb.add(this.qb, "x", -range, range, step).onChange(func);
-            fqb.add(this.qb, "y", -range, range, step).onChange(func);
-            fqb.add(this.qb, "z", -range, range, step).onChange(func);
-            fqb.add(this.qb, "w", -range, range, step).onChange(func);
+            fqb.add(this.qb, "keepUnitQuaternion").name("auto. value").onChange(() => { this.update() });
+            fqb.add(this, "showRotAxisQb").name("show rot. axis").onChange(() => { this.update() });
+            fqb.add(this.qb, "x", -range, range, step).listen().onChange(() => { this.update() });
+            fqb.add(this.qb, "y", -range, range, step).listen().onChange(() => { this.update() });
+            fqb.add(this.qb, "z", -range, range, step).listen().onChange(() => { this.update() });
+            fqb.add(this.qb, "w", -range, range, step).listen().onChange(() => { this.update() });
 
         }
+
+        const fqw = folder.addFolder("Working Quaternion");
+        fqw.add(this.qworking, "keepUnitQuaternion").name("auto. value").onChange(() => { this.update() });
+        fqw.add(this, "showRotAxisQworking").name("show rot. axis").onChange(() => { this.update() });
+        fqw.add(this.qworking, "x", -range, range, step).listen().onChange((v: number) => { this.qworking.x = v; this.update(true) });
+        fqw.add(this.qworking, "y", -range, range, step).listen().onChange((v: number) => { this.qworking.y = v; this.update(true) });
+        fqw.add(this.qworking, "z", -range, range, step).listen().onChange((v: number) => { this.qworking.z = v; this.update(true) });
+        fqw.add(this.qworking, "w", -range, range, step).listen().onChange((v: number) => { this.qworking.w = v; this.update(true) });
     }
 
 
@@ -153,8 +160,9 @@ export class RotationObject implements Updatable, Modifiable {
 
         const suffix: string[] = ["A", "B", "C"];
         const ref: Quaternion[] = [this.qa, this.qb, this.qworking];
+        const show: boolean[] = [this.showRotAxisQa, this.showRotAxisQb, this.showRotAxisQworking];
 
-        for (let i = 0; i < ref.length; i++) {
+        for (let i = 0; i < ref.length - (this.MODE === "Single" ? 1 : 0); i++) {
             const line = this._rotationAxis.getObjectByName("rotationAxisLine" + suffix[i]) as Line;
             const point = this._rotationAxis.getObjectByName("rotationAxisPoint" + suffix[i]) as Mesh;
 
@@ -171,8 +179,14 @@ export class RotationObject implements Updatable, Modifiable {
             let factor: number = 3.5;
             if (suffix[i] === "C") factor = 4;
 
-            line.geometry = new BufferGeometry().setFromPoints([origin, dir.normalize().multiplyScalar(factor)]);
-            point.position.copy(dir);
+            if (show[i]) {
+                line.geometry = new BufferGeometry().setFromPoints([origin, dir.normalize().multiplyScalar(factor)]);
+                point.position.copy(dir);
+            }
+            else {
+                line.geometry = new BufferGeometry();
+                point.position.copy(origin);
+            }
         }
     }
 
@@ -216,9 +230,14 @@ export class RotationObject implements Updatable, Modifiable {
     public SLERP: boolean = false;
     public MODE: string = "Single";
 
-    public qa: Quaternion = new Quaternion();;
-    public qb: Quaternion = new Quaternion();;
-    public qworking: Quaternion = new Quaternion();;
+    public qa: Quaternion = new Quaternion();
+    public qb: Quaternion = new Quaternion();
+    public qworking: Quaternion = new Quaternion();
+
+    public showRotAxisQa: boolean = true;
+    public showRotAxisQb: boolean = true;
+    public showRotAxisQworking: boolean = true;
+
     public t: number = 0;
 
     private _coordinate: Group = new Group();
diff --git a/src/style.css b/src/style.css
index 910f2375a6355d169a24c76625a368a82584b00f..d7c22f4fe9021a498345217eeb7167431a849aac 100644
--- a/src/style.css
+++ b/src/style.css
@@ -2,7 +2,7 @@
   margin: 0;
   padding: 0;
   box-sizing: border-box;
-  font-family: 'Poppins', sans-serif;
+  font-family: 'Arial', sans-serif;
 }
 
 canvas {