diff --git a/Assets/Scripts/GenerateDemoFiles.cs b/Assets/Scripts/GenerateDemoFiles.cs
index f30520b4d57f3306f0ff738de1164569a2b27c7e..252a0ca7521dbf672742fc79594b149bcf2ccc3e 100644
--- a/Assets/Scripts/GenerateDemoFiles.cs
+++ b/Assets/Scripts/GenerateDemoFiles.cs
@@ -46,11 +46,11 @@ public static void GenerateDemoA()
             buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution),
             top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution);
 
-        StageStatic.stage.solution.Add(buttom, out _);
-        StageStatic.stage.solution.Add(top, out _, true);
+        StageStatic.stage.solution.Add(buttom, out _, false, null);
+        StageStatic.stage.solution.Add(top, out _, true, null);
 
         LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution);
-        var target_Id = StageStatic.stage.solution.Add(target, out _, true);
+        var target_Id = StageStatic.stage.solution.Add(target, out _, true, null);
 
         // Set Solution
         StageStatic.stage.solution.ValidationSet =
@@ -92,11 +92,11 @@ public static void GenerateDemoB()
             buttom = new PointFact(Vector3.zero, Vector3.up, StageStatic.stage.solution),
             top = new PointFact(Vector3.zero + Vector3.up * minimalSolutionHight, Vector3.up, StageStatic.stage.solution);
 
-        StageStatic.stage.solution.Add(buttom, out _);
-        StageStatic.stage.solution.Add(top, out _, true);
+        StageStatic.stage.solution.Add(buttom, out _, false, null);
+        StageStatic.stage.solution.Add(top, out _, true, null);
 
         LineFact target = new LineFact(buttom.Id, top.Id, StageStatic.stage.solution);
-        var target_Id = StageStatic.stage.solution.Add(target, out _, true);
+        var target_Id = StageStatic.stage.solution.Add(target, out _, true, null);
 
         // Set Solution
         StageStatic.stage.solution.ValidationSet =
diff --git a/Assets/Scripts/InteractionEngine/AlignText.cs b/Assets/Scripts/InteractionEngine/AlignText.cs
index 27469c0d9dcb115e6bfa5eae0b96281db54abe70..3f19d2cc7cf91156d4df1bc9713c082b018b04a1 100644
--- a/Assets/Scripts/InteractionEngine/AlignText.cs
+++ b/Assets/Scripts/InteractionEngine/AlignText.cs
@@ -52,7 +52,7 @@ Camera toCamMain()
     IEnumerator CheckForNewMainCamRoutine()
     {
 
-        yield return new WaitForSeconds(2);
+        //yield return new WaitForSeconds(2); No!
         switch (UIconfig.MainCameraID)
         {
                         
@@ -71,6 +71,7 @@ IEnumerator CheckForNewMainCamRoutine()
                 break;
 
         }
+        yield return null;
         //StopCoroutine(CheckForNewMainCamRoutine());
         //print("Stopped:CheckForNewMainCamRoutine()");
         //Cam = Camera.main;
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs
index 8426ed9d9c2c4e816bfb8fe28ed7aa2dfaa0d76c..158544732849984b8a9373f203a73cb750ca3be2 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/FactManager.cs
@@ -17,7 +17,7 @@ public static class FactManager
     /// \copydetails FactManager
     public static Fact AddFactIfNotFound(Fact fact, out bool exists, bool samestep)
     {
-        return StageStatic.stage.factState[StageStatic.stage.factState.Add(fact, out exists, samestep)];
+        return StageStatic.stage.factState[StageStatic.stage.factState.Add(fact, out exists, samestep, GadgetManager.activeGadget.GetType())];
     }
 
     /// \copybrief FactManager <summary></summary>
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
index afe14cb7a3f9e315cdcea2407c4cb15003452fda..60c07fb8b33da4f40c92db23255d84a270ca84f3 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
@@ -171,15 +171,26 @@ protected internal struct meta
         /// </summary>
         public bool active;
 
+        /// <summary>
+        /// keeps track with wich <see cref="Gadget"/> the <see cref="Fact"/> is created
+        /// </summary>
+        public Type gadget {
+            get => _gadget;
+            set => _gadget = Gadget.GadgetTypes.Contains(value) ? value : typeof(Gadget.UndefinedGadget);
+        }
+        private Type _gadget;
+
         /// <summary>
         /// Initiator
         /// </summary>
         /// <param name="workflow_id">sets <see cref="workflow_id"/></param>
         /// <param name="active">sets <see cref="active"/></param>
-        public meta(int workflow_id, bool active = true)
+        public meta(int workflow_id, bool active, Type gadget)
         {
             this.workflow_id = workflow_id;
             this.active = active;
+            _gadget = null; //Compiler Restriction
+            this.gadget = gadget;
         }
     }
 
@@ -254,7 +265,7 @@ public static T ReInitializeFactOrganizer<T>
                     old_to_new.Add(sn.Id, add.Id);
                 }
 
-                target.Add(add, out _, sn.samestep);
+                target.Add(add, out _, sn.samestep, source.MetaInf[sn.Id].gadget);
             }
             else if (old_to_new.ContainsKey(sn.Id))
             // Remove
@@ -406,7 +417,7 @@ private void PruneWorkflow()
     /// <param name="samestep">set <c>true</c> if <see cref="Fact"/> creation happens as a subsequent/ consequent step of multiple <see cref="Fact"/> creations and/or deletions, 
     /// and you whish that these are affected by a single <see cref="undo"/>/ <see cref="redo"/> step</param>
     /// <returns><see cref="Fact.Id"/> of <paramref name="value"/> or <see cref="FindEquivalent(Fact, out string, out bool)">found</see> <see cref="Fact"/> iff <paramref name="exists"/>==<c>true</c></returns>
-    public string Add(Fact value, out bool exists, bool samestep = false)
+    public string Add(Fact value, out bool exists, bool samestep, Type gadget)
     {
         soft_resetted = false;
 #pragma warning disable IDE0018 // Inlinevariablendeklaration
@@ -427,7 +438,7 @@ public string Add(Fact value, out bool exists, bool samestep = false)
                 zombie.creation = false; // this meta entry will be deleted, but will not trigger deletion
                 Workflow[MetaInf[key].workflow_id] = zombie;
                 // set new init location
-                MetaInf[key] = new meta(marker, true);
+                MetaInf[key] = new meta(marker, true, gadget);
             }
             // zombies are undead!
             else if (MetaInf[key].active)
@@ -440,7 +451,7 @@ public string Add(Fact value, out bool exists, bool samestep = false)
         {
             key = value.Id;
             FactDict.Add(key, value);
-            MetaInf.Add(key, new meta(marker, true));
+            MetaInf.Add(key, new meta(marker, true, gadget));
         }
 
         WorkflowAdd(new stepnote(key, samestep, true, this));
@@ -457,9 +468,7 @@ public string Add(Fact value, out bool exists, bool samestep = false)
     /// and you whish that these are affected by a single <see cref="undo"/>/ <see cref="redo"/> step</param>
     /// <returns><c>true</c> iff <paramref name="value"/><see cref="Fact.Id">.Id</see> was found.</returns>
     public bool Remove(Fact value, bool samestep = false)
-    {
-        return this.Remove(value.Id, samestep);
-    }
+        => this.Remove(value.Id, samestep);
 
     /// \copybrief Remove(Fact, bool)
     /// <remarks>this will not <see cref="Fact.delete(bool)">delete</see> a <see cref="Fact"/>, but sets it <see cref="meta.active">inactive</see> for later <see cref="Fact.delete(bool)">deletion</see> when <see cref="PruneWorkflow">pruned</see>.</remarks>
@@ -763,7 +772,7 @@ public bool DynamiclySolved(
     {
         MissingElements = new List<List<string>>();
         // need to work not on ref/out
-        List<List<string>> Solution_L = new List<List<string>>();
+        List<List<string>> Solution_L = new();
 
         int MissingElementsCount = 0;
         var activeList = FactDict.Values.Where(f => MetaInf[f.Id].active);
@@ -812,4 +821,7 @@ public bool DynamiclySolved(
         return MissingElementsCount == 0;
     }
 
+    public IEnumerable<Type> GetUsedGadgets()
+        => MetaInf.Values.Where(inf => inf.active).Select(inf => inf.gadget);
+
 }
\ No newline at end of file
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
index 7faca0f67ac8f949e0403b9a60fb980e71808017..a015611bc99efb848ebca0d50d3912823c91985d 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
@@ -75,7 +75,7 @@ public string ComparerString
             }
         }
         /// <summary>
-        /// Collection of <c>string</c> representations of *all* available <see cref="FactComparer"/> to choose from.
+        /// Collection of <c>Type</c>s of *all* available <see cref="FactComparer"/> to choose from.
         /// </summary>
         [JsonIgnore]
         public static readonly IEnumerable<Type> fact_comparer = Assembly.GetExecutingAssembly().GetTypes().Where(typeof(FactComparer).IsAssignableFrom);
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs
index d39ced488e0e4d32fb93a02a1440e6f8be033dbd..e037236a891b5dd09f939c57c56a5d9a0b7b79e2 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/AngleTool.cs
@@ -24,69 +24,68 @@ public class AngleTool : Gadget
     private Vector3 angleMiddlePoint;
     private float curveRadius;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         UiName = "Angle Mode";
         if(MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
     //Initialize Gadget when enabled AND activated
-    new void OnEnable()
+    public override void _OnEnable()
     {
-        base.OnEnable();
-        this.ResetGadget();
+        ResetGadget();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
-        this.ResetGadget();
+        ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
-        if (!GadgetCanBeUsed) return;
-        if (!this.isActiveAndEnabled) return;
+        if (!GadgetCanBeUsed)       return;
+        if (!isActiveAndEnabled)    return;
+
         if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
         {
             PointFact tempFact = (PointFact)StageStatic.stage.factState[hit.transform.GetComponent<FactObject>().URI];
 
             //If two points were already selected and now the third point got selected
-            if (this.angleModeIsFirstPointSelected && this.angleModeIsSecondPointSelected)
+            if (angleModeIsFirstPointSelected && angleModeIsSecondPointSelected)
             {
                 //Create AngleFact
                 //Check if new Point is equal to one of the previous points -> if true -> cancel
-                if (!(this.angleModeFirstPointSelected.Id == tempFact.Id || this.angleModeSecondPointSelected.Id == tempFact.Id))
+                if (!(angleModeFirstPointSelected.Id == tempFact.Id || angleModeSecondPointSelected.Id == tempFact.Id))
                 {
-                    FactManager.AddAngleFact(((PointFact)this.angleModeFirstPointSelected).Id, ((PointFact)this.angleModeSecondPointSelected).Id, ((PointFact)tempFact).Id);
+                    FactManager.AddAngleFact((angleModeFirstPointSelected).Id, (angleModeSecondPointSelected).Id, tempFact.Id);
                 }
 
                 ResetGadget();
             }
             //If only one point was already selected
-            else if (this.angleModeIsFirstPointSelected && !this.angleModeIsSecondPointSelected)
+            else if (angleModeIsFirstPointSelected && !angleModeIsSecondPointSelected)
             {
                 //Check if the 2 selected points are the same: If not
-                if (this.angleModeFirstPointSelected.Id != tempFact.Id)
+                if (angleModeFirstPointSelected.Id != tempFact.Id)
                 {
-                    this.angleModeIsSecondPointSelected = true;
-                    this.angleModeSecondPointSelected = tempFact;
+                    angleModeIsSecondPointSelected = true;
+                    angleModeSecondPointSelected = tempFact;
 
                     ActivateCurveDrawing();
                 }
-                else
-                {
-                    this.angleModeFirstPointSelected = null;
-                    this.angleModeIsFirstPointSelected = false;
-                }
+                //else
+                //{
+                //    angleModeFirstPointSelected = null;
+                //    angleModeIsFirstPointSelected = false;
+                //}
             }
             //If no point was selected before
             else
             {
                 //Save the first point selected
-                this.angleModeIsFirstPointSelected = true;
-                this.angleModeFirstPointSelected = tempFact;
+                angleModeIsFirstPointSelected = true;
+                angleModeFirstPointSelected = tempFact;
             }
         }
         //No point was hit
@@ -100,33 +99,33 @@ public override void OnHit(RaycastHit hit)
 
     void Update()
     {
-        if (!this.isActiveAndEnabled) return;
-        if (this.curveDrawingActivated)
-            UpdateCurveDrawing(this.Cursor.transform.position);
+        if (!isActiveAndEnabled) return;
+        if (curveDrawingActivated)
+            UpdateCurveDrawing(Cursor.transform.position);
     }
 
     private void ResetGadget()
     {
-        this.angleModeIsFirstPointSelected = false;
-        this.angleModeFirstPointSelected = null;
-        this.angleModeIsSecondPointSelected = false;
-        this.angleModeSecondPointSelected = null;
+        angleModeIsFirstPointSelected = false;
+        angleModeFirstPointSelected = null;
+        angleModeIsSecondPointSelected = false;
+        angleModeSecondPointSelected = null;
         DeactivateCurveDrawing();
     }
 
     //Expect a LineFact here, where Line.Pid2 will be the Basis-Point of the angle
     public void ActivateCurveDrawing()
     {
-        this.lineRenderer.enabled = true;
+        lineRenderer.enabled = true;
         //In AngleMode with 3 Points we want to draw nearly a rectangle so we add a startPoint and an Endpoint to this preview
-        this.lineRenderer.positionCount = curveDrawingVertexCount + 2;
-        this.lineRenderer.material = this.anglePreviewMaterial;
+        lineRenderer.positionCount = curveDrawingVertexCount + 2;
+        lineRenderer.material = anglePreviewMaterial;
 
         lineRenderer.startWidth = 0.05f;
         lineRenderer.endWidth = 0.05f;
 
         //Set CurveDrawing activated
-        this.curveDrawingActivated = true;
+        curveDrawingActivated = true;
 
         //curveEndPoint is a point on the Line selected, with some distance from point2
         curveEndPoint = angleModeSecondPointSelected.Point + 0.3f * (angleModeFirstPointSelected.Point - angleModeSecondPointSelected.Point).magnitude * (angleModeFirstPointSelected.Point - angleModeSecondPointSelected.Point).normalized;
@@ -150,7 +149,7 @@ public void UpdateCurveDrawing(Vector3 currentPosition)
             angleModeSecondPointSelected.Point
         };
 
-        for (float ratio = 0; ratio <= 1; ratio += 1.0f / this.curveDrawingVertexCount)
+        for (float ratio = 0; ratio <= 1; ratio += 1.0f / curveDrawingVertexCount)
         {
             var tangentLineVertex1 = Vector3.Lerp(startPoint, curveMiddlePoint, ratio);
             var tangentLineVertex2 = Vector3.Lerp(curveMiddlePoint, curveEndPoint, ratio);
@@ -168,10 +167,10 @@ public void UpdateCurveDrawing(Vector3 currentPosition)
 
     public void DeactivateCurveDrawing()
     {
-        this.lineRenderer.positionCount = 0;
-        this.linePositions = new List<Vector3>();
-        this.curveDrawingActivated = false;
-        this.lineRenderer.enabled = false;
+        lineRenderer.positionCount = 0;
+        linePositions = new List<Vector3>();
+        curveDrawingActivated = false;
+        lineRenderer.enabled = false;
     }
 
 }
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs b/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs
index 944e8f4cd9c037d7a541b0306126d6b854ecafe1..70acd17f9783ff6e9561ef4c662243edcda8a035 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/ExtraGadget.cs
@@ -2,21 +2,18 @@
 
 public class ExtraGadget : Gadget
 {
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         UiName = "Extra Mode";
         MaxRange = GlobalBehaviour.GadgetPhysicalDistance;
     }
 
-    new void OnEnable()
-    {
-        base.OnEnable();
-    }
+    public override void _OnDisable() { }
 
-    public override void OnHit(RaycastHit hit)
-    {
+    public override void _OnEnable() { }
 
+    public override void _OnHit(RaycastHit hit)
+    {
+        throw new System.NotImplementedException();
     }
-
 }
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs b/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs
index 194e6829cdc1a3d0e1b14e97fec7c4f6804df463..f7ca3e68ccb00ceaa0c22320a8627c469057d211 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/Gadget.cs
@@ -1,10 +1,14 @@
-using UnityEngine;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using UnityEngine;
 
 /// <summary>
 /// Base class for all Gadgets to derive from.
 /// A Gadget is a tool for the player (and level editor) to interact with the GameWorld.
 /// </summary>
-public class Gadget : MonoBehaviour
+public abstract class Gadget: MonoBehaviour
 {
     /// <summary> Position in tool belt. </summary>
     /// <remarks>Set in Inspector or <see cref="Awake"/></remarks>
@@ -19,30 +23,77 @@ public class Gadget : MonoBehaviour
     /// <summary>Which sprite to use</summary>
     /// <remarks>Set in Inspector</remarks>
     public Sprite Sprite;
-    /// <summary>Layers to ignore for thid gadget by default.</summary>
+    /// <summary>Layers to ignore for this gadget by default.</summary>
     /// <remarks>Set in Inspector</remarks>
     public LayerMask ignoreLayerMask;
     /// <summary>Which cursor to use</summary>
     /// <remarks>When not set in Inspector, will be searching for any <see cref="WorldCursor"/>.</remarks>
     public WorldCursor Cursor;
 
-    protected void Awake()
+    /// <summary>
+    /// Collection of <c>Type</c>s of *all* available <see cref="Gadget"/>s to choose from.
+    /// </summary>
+    public static readonly IEnumerable<Type> GadgetTypes = Assembly.GetExecutingAssembly().GetTypes().Where(typeof(Gadget).IsAssignableFrom);
+
+
+    void Awake()
     {
         if (Cursor == null)
             Cursor = GameObject.FindObjectOfType<WorldCursor>();
 
-        CommunicationEvents.TriggerEvent.AddListener(OnHit);
+        CommunicationEvents.TriggerEvent.AddListener(_OnHit);
+
+        _Awake();
     }
 
-    protected void OnEnable()
+    void OnEnable()
     {
         this.Cursor.setLayerMask(~this.ignoreLayerMask.value);
         Cursor.MaxRange = MaxRange;
+
+        _OnEnable();
     }
 
+    void OnDisable()
+    {
+        _OnDisable();
+    }
+
+    public void OnHit (RaycastHit hit)
+    {
+        _OnHit(hit);
+    }
+
+    public abstract void _Awake();
+    public abstract void _OnEnable();
+    public abstract void _OnDisable();
+
     /// <summary>
     /// Called when <see cref="CommunicationEvents.TriggerEvent"/> is invoked, a.k.a. when Player clicks in GameWorld.
     /// </summary>
     /// <param name="hit">the position where it was clicked</param>
-    public virtual void OnHit(RaycastHit hit) { }
+    public abstract void _OnHit(RaycastHit hit);
+
+    public class UndefinedGadget : Gadget
+    {
+        public override void _Awake()
+        {
+            throw new NotImplementedException();
+        }
+
+        public override void _OnDisable()
+        {
+            throw new NotImplementedException();
+        }
+
+        public override void _OnEnable()
+        {
+            throw new NotImplementedException();
+        }
+
+        public override void _OnHit(RaycastHit hit)
+        {
+            throw new NotImplementedException();
+        }
+    }
 }
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs
index a11985f3ed0d852997753c885244aba6d72f18dd..3945dd8ee3e779a397b2ffe99d3c330139352dee 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/LineTool.cs
@@ -15,27 +15,25 @@ public class LineTool : Gadget
     private List<Vector3> linePositions = new List<Vector3>();
     public Material linePreviewMaterial;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         UiName = "Line Mode";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
     //Initialize Gadget when enabled AND activated
-    new void OnEnable()
+    public override void _OnEnable()
     {
-        base.OnEnable();
         this.ResetGadget();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
         this.ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
         if (!GadgetCanBeUsed) return;
         if (!this.isActiveAndEnabled) return;
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs
index eeef723c9a94363071001077e72ff0b1aa25b5c4..67b1aa3ca2c1fdca71ccdf8498ce6975df5017b9 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/LotTool.cs
@@ -20,31 +20,26 @@ public class LotTool : Gadget
     private List<Vector3> linePositions = new List<Vector3>();
     public Material linePreviewMaterial;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         this.UiName = "Lot Mode";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
     //Initialize Gadget when enabled AND activated
-    new void OnEnable()
+    public override void _OnEnable()
     {
-        base.OnEnable();
         this.ResetGadget();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
         this.ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
-        
-
-
         void CreateRayAndAngles(string pidIntersectionPoint, string pidLotPoint, bool samestep)
         {
             FactManager.AddRayFact(pidIntersectionPoint, pidLotPoint, samestep);
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs b/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs
index f27caf4d834292f2308239ddaadce06a268dcbce..411a16673d5fce28bfce5fadb55dd09254bc2d02 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/Pendulum.cs
@@ -13,27 +13,25 @@ public class Pendulum : Gadget
     private List<Vector3> linePositions = new List<Vector3>();
     public Material linePreviewMaterial;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         this.UiName = "Pendulum";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
-    new void OnEnable()
+    public override void _OnEnable()
     {
-        base.OnEnable();
         this.ResetGadget();
         ActivateLineDrawing();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
         this.ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
 
         if (!GadgetCanBeUsed) return; 
@@ -44,8 +42,7 @@ public override void OnHit(RaycastHit hit)
             PointFact tempFact = StageStatic.stage.factState[hit.transform.GetComponent<FactObject>().URI] as PointFact;
 
             //Raycast downwoard
-            RaycastHit ground;
-            if(Physics.Raycast(tempFact.Point, Vector3.down, out ground, Mathf.Infinity, this.LayerPendulumHits.value))
+            if(Physics.Raycast(tempFact.Point, Vector3.down, out RaycastHit ground, Mathf.Infinity, this.LayerPendulumHits.value))
             {
                 FactManager.AddPointFact(ground);
             }
@@ -89,8 +86,7 @@ private void UpdateLineDrawing()
         this.linePositions[0] = this.Cursor.transform.position;
 
         //Raycast downwoard
-        RaycastHit ground;
-        if (Physics.Raycast(this.linePositions[0], Vector3.down, out ground, Mathf.Infinity, this.LayerPendulumHits.value))
+        if (Physics.Raycast(this.linePositions[0], Vector3.down, out RaycastHit ground, Mathf.Infinity, this.LayerPendulumHits.value))
             this.linePositions[1] = ground.point;
         else
             this.linePositions[1] = this.linePositions[0];
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs b/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs
index 73dfcdcdd5c0c98b4c79bb356f0d56db5177ee9b..45d9f02fa26bc072cd89a23c9b00ff2a7be78f1d 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/Pointer.cs
@@ -5,21 +5,19 @@
 
 public class Pointer : Gadget
 {
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         this.UiName = "Point Mode";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
-        //Debug.Log("pointer1");
         if (!GadgetCanBeUsed) return;
-       
+
         if (!this.isActiveAndEnabled) return;
-        
+
         var pid = FactManager.AddPointFact(hit).Id;
 
         if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ray"))
@@ -27,5 +25,8 @@ public override void OnHit(RaycastHit hit)
             FactManager.AddOnLineFact(pid, hit.transform.GetComponent<FactObject>().URI, true);
         }
     }
-  
+
+    public override void _OnEnable() { }
+
+    public override void _OnDisable() { }
 }
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs b/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs
index 003d18e1819d90ad69d8beafbe383a7f1180179c..a95d945a08c2165b0d29b637bc3fbcc7243eb668 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/PoleTool.cs
@@ -15,9 +15,8 @@ public class PoleTool : Gadget
     public float poleHeight = 1f;
     public float maxHeight;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         UiName = "PoleTool";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetPhysicalDistance;
@@ -25,19 +24,18 @@ public class PoleTool : Gadget
             maxHeight = 0.1f;
     }
 
-    new void OnEnable()
+    public override void _OnEnable()
     {
-        base.OnEnable();
         this.ResetGadget();
         ActivateLineDrawing();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
         this.ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
 
         if (!GadgetCanBeUsed) return; 
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs b/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs
index 47016f20e86581879d6b19431db06f62e9cee2d0..69438a411b22e1e405e8b648c7b3b11f43d463d7 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/Remover.cs
@@ -5,15 +5,18 @@
 
 public class Remover : Gadget
 {
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         this.UiName = "Remove Mode";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetLaserDistance;
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnDisable() { }
+
+    public override void _OnEnable() { }
+
+    public override void _OnHit(RaycastHit hit)
     {
 
         if (!GadgetCanBeUsed) return;
diff --git a/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs b/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs
index 933e75dba3b5009c049ff3d9e7e2da468009e726..273f96090c9fe7efb9dd3cf55c0bc8628d248fc1 100644
--- a/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs
+++ b/Assets/Scripts/InteractionEngine/Gadgets/Tape.cs
@@ -16,29 +16,25 @@ public class Tape : Gadget
     private List<Vector3> linePositions = new List<Vector3>();
     public Material linePreviewMaterial;
 
-    new void Awake()
+    public override void _Awake()
     {
-        base.Awake();
         this.UiName = "Distance Mode";
         if (MaxRange == 0)
             MaxRange = GlobalBehaviour.GadgetPhysicalDistance;
-        //test
-        //MaxRange = 100;
     }
 
-    //Initialize Gadget when enabled AND activated
-    new void OnEnable()
+    //Initialize Gadget when enabled
+    public override void _OnEnable()
     {
-        base.OnEnable();
         this.ResetGadget();
     }
 
-    void OnDisable()
+    public override void _OnDisable()
     {
         this.ResetGadget();
     }
 
-    public override void OnHit(RaycastHit hit)
+    public override void _OnHit(RaycastHit hit)
     {
         if (!GadgetCanBeUsed) return;
         if (!this.isActiveAndEnabled) return;
@@ -142,4 +138,5 @@ private void DeactivateLineDrawing()
         this.linePositions = new List<Vector3>();
         this.lineRenderer.enabled = false;
     }
+
 }
diff --git a/Assets/Scripts/Loading/Stage.cs b/Assets/Scripts/Loading/Stage.cs
index e89eb914702d5f5325f0bb62992b0bca77ac4c4a..a60aec46751ae23fe822307553689b8191ff45ab 100644
--- a/Assets/Scripts/Loading/Stage.cs
+++ b/Assets/Scripts/Loading/Stage.cs
@@ -5,17 +5,18 @@
 using UnityEngine;
 using Newtonsoft.Json;
 using static CommunicationEvents;
-using System.Reflection;
 
-//using static IJSONsavable<Stage>;
 
 public class Stage: IJSONsavable<Stage>
 {
+    #region metadata
 
     /// <summary> Which category this <see cref="Stage"/> should be displayed in. </summary>
     public string category = null;
+
     /// <summary> Where to display this <see cref="Stage"/> within a <see cref="category"/> relative to others. </summary>
     public int number = -1;
+
     /// <summary>
     /// The name this <see cref="Stage"/> will be displayed with.
     /// Also defines names of save files of <see cref="player_record_list">stage progress</see>, <see cref="solution"/>
@@ -32,15 +33,35 @@ public class Stage: IJSONsavable<Stage>
     /// <summary> Wether this <see cref="Stage"/> is located in installation folder or user data (a.k.a. !local).</summary>
     public bool use_install_folder = false;
 
+    #endregion metadata
+
+    /// <summary>
+    /// Defining when this <see cref="Stage.player_record"/> is considered as solved.
+    /// <seealso cref="FactOrganizer.DynamiclySolved(SolutionOrganizer, out List{List{string}}, out List{List{string}})"/>
+    /// </summary>
+    [JSONsavable.JsonAutoPreProcess, JSONsavable.JsonAutoPostProcess]
+    public SolutionOrganizer solution = null;
+
     [JsonIgnore, JSONsavable.JsonSeparate]
     public SaveGame savegame = null;
 
+    #region makros/shortcuts
+
     /// <summary>
     /// <see langword="true"/> iff there is at least one element in <see cref="player_record_list"/> where <see cref="PlayerRecord.solved"/> == <see langword="true"/>.
     /// </summary>
     [JsonIgnore]
     //TODO? update color if changed
-    public bool completed_once { get { return player_record_list != null && player_record_list.Values.Where(s => s.solved == true).Any(); } }
+    public bool completed_once { get { return player_record_list != null && player_record_list.Values.Any(s => s.solved == true); } }
+
+    /// <summary> Current Stage progress.</summary>
+    [JsonIgnore]
+    public PlayerRecord player_record { 
+        get => savegame?.player_record;
+        set => (savegame ??= new())
+            .player_record = value;
+    }
+
     /// <summary>
     /// A list containing all saved player progress. <br/>
     /// - Key: name of file
@@ -53,13 +74,6 @@ public Dictionary<string, PlayerRecord> player_record_list {
             .player_record_list = value;
     }
 
-    /// <summary>
-    /// Defining when this <see cref="Stage.player_record"/> is considered as solved.
-    /// <seealso cref="FactOrganizer.DynamiclySolved(SolutionOrganizer, out List{List{string}}, out List{List{string}})"/>
-    /// </summary>
-    [JSONsavable.JsonAutoPreProcess, JSONsavable.JsonAutoPostProcess]
-    public SolutionOrganizer solution = null;
-
     /// <summary>
     /// A wrapper returning (or setting) <see cref="player_record.factState"/>. <br/>
     /// When <see cref="player_record"/> == <see langword="null"/>:
@@ -72,13 +86,9 @@ public FactOrganizer factState {
         set => (player_record ??= new(record_name))
             .factState = value;
     }
-    /// <summary> Current Stage progress.</summary>
-    [JsonIgnore]
-    public PlayerRecord player_record { 
-        get => savegame?.player_record;
-        set => (savegame ??= new())
-            .player_record = value;
-    }
+
+    #endregion makros/shortcuts
+
     /// <summary> Returns a name for <see cref="player_record.name"/> which needs to be uniquified once put into <see cref="player_record_list"/> (e.g. by <see cref="push_record(double, bool) adding '_i'"/>).</summary>
     private string record_name { get { return name + "_save"; } }
 
@@ -470,8 +480,7 @@ public class PlayerRecord: IJSONsavable<PlayerRecord>
     public FactOrganizer factState = new();
     /// <summary> save game file name </summary>
     public string name { get; set; } = null;
-
-    public string path { get; set; }
+    public string path { get; set; } = null;
 
     static PlayerRecord(/*static!*/)
     {
@@ -492,7 +501,6 @@ public PlayerRecord(string name) {
         factState = new FactOrganizer();
     }
 
-
     /// <summary>
     /// Copies a specified <see cref="PlayerRecord"/>
     /// </summary>
@@ -509,4 +517,13 @@ public PlayerRecord Clone()
 
         return ret;
     }
+}
+
+
+public class SolutionApproach: IJSONsavable<SolutionApproach>
+{
+    public string name { get; set; } = null;
+    public string path { get; set; } = null;
+
+    //public PlayerRecord
 }
\ No newline at end of file
diff --git a/GlobalSuppressions2.cs b/GlobalSuppressions2.cs
new file mode 100644
index 0000000000000000000000000000000000000000..496b77e3fcf2119ba29c360ed0c3bf213256f33d
--- /dev/null
+++ b/GlobalSuppressions2.cs
@@ -0,0 +1,9 @@
+// This file is used by Code Analysis to maintain SuppressMessage
+// attributes that are applied to this project.
+// Project-level suppressions either have no target or are given
+// a specific target and scoped to a namespace, type, member, etc.
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: SuppressMessage("Style", "IDE0034:Simplify 'default' expression", Justification = "Readabilty", Scope = "member", Target = "~M:IJSONsavable`1.load(System.Collections.Generic.List{CommunicationEvents.Directories},System.String,`0@,System.Boolean,System.Boolean,System.Boolean)~System.Boolean")]
+[assembly: SuppressMessage("Style", "IDE0034:Simplify 'default' expression", Justification = "<Pending>", Scope = "member", Target = "~M:JSONsavable.ReadFromJsonFile``1(``0@,System.String)~System.Boolean")]
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
index 0896c38ada2fbb2a6d0f262abc13722c16f18fbf..260df1b47fc4fc30ff00cb003d0bc1b6d63ae8ab 100644
--- a/UserSettings/EditorUserSettings.asset
+++ b/UserSettings/EditorUserSettings.asset
@@ -6,14 +6,20 @@ EditorUserSettings:
   serializedVersion: 4
   m_ConfigSettings:
     RecentlyUsedSceneGuid-0:
-      value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e
+      value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c
       flags: 0
     RecentlyUsedSceneGuid-1:
-      value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c
+      value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a
       flags: 0
     RecentlyUsedSceneGuid-2:
+      value: 520107035d0c510c080d547215760b4413154d2e7a2c226129281c65e3b63768
+      flags: 0
+    RecentlyUsedSceneGuid-3:
       value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d
       flags: 0
+    RecentlyUsedSceneGuid-4:
+      value: 57505505560608585a56557116730644404e4d7b7c7b7562787e4f66e4b1313e
+      flags: 0
     RecentlyUsedScenePath-0:
       value: 22424703114646680e0b0227036c721518021d39630928343f162e27e3f22076f7e93ffdfe
       flags: 0
diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt
index 459707aae6551378333e544a37229fd05257cb2c..01d786d322a3f4b42cda74f6ecfcc630d0ca07a5 100644
--- a/UserSettings/Layouts/default-2021.dwlt
+++ b/UserSettings/Layouts/default-2021.dwlt
@@ -1,30 +1,6 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
 --- !u!114 &1
-MonoBehaviour:
-  m_ObjectHideFlags: 52
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_PixelRect:
-    serializedVersion: 2
-    x: 2783
-    y: 205
-    width: 640
-    height: 661
-  m_ShowMode: 0
-  m_Title: Build Settings
-  m_RootView: {fileID: 4}
-  m_MinSize: {x: 640, y: 601}
-  m_MaxSize: {x: 4000, y: 4021}
-  m_Maximized: 0
---- !u!114 &2
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -38,67 +14,17 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_PixelRect:
     serializedVersion: 2
-    x: -1920
+    x: 0
     y: 43
-    width: 1920
-    height: 1037
+    width: 2560
+    height: 1357
   m_ShowMode: 4
-  m_Title: Hierarchy
-  m_RootView: {fileID: 9}
+  m_Title: Project
+  m_RootView: {fileID: 6}
   m_MinSize: {x: 875, y: 300}
   m_MaxSize: {x: 10000, y: 10000}
   m_Maximized: 1
---- !u!114 &3
-MonoBehaviour:
-  m_ObjectHideFlags: 52
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: BuildPlayerWindow
-  m_EditorClassIdentifier: 
-  m_Children: []
-  m_Position:
-    serializedVersion: 2
-    x: 0
-    y: 0
-    width: 640
-    height: 661
-  m_MinSize: {x: 640, y: 580}
-  m_MaxSize: {x: 4000, y: 4000}
-  m_ActualView: {fileID: 15}
-  m_Panes:
-  - {fileID: 15}
-  m_Selected: 0
-  m_LastSelected: 0
---- !u!114 &4
-MonoBehaviour:
-  m_ObjectHideFlags: 52
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Children:
-  - {fileID: 3}
-  m_Position:
-    serializedVersion: 2
-    x: 0
-    y: 0
-    width: 640
-    height: 661
-  m_MinSize: {x: 640, y: 601}
-  m_MaxSize: {x: 4000, y: 4021}
-  vertical: 0
-  controlID: 54
---- !u!114 &5
+--- !u!114 &2
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -111,19 +37,19 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Children:
-  - {fileID: 12}
-  - {fileID: 6}
+  - {fileID: 9}
+  - {fileID: 3}
   m_Position:
     serializedVersion: 2
     x: 0
     y: 30
-    width: 1920
-    height: 987
+    width: 2560
+    height: 1307
   m_MinSize: {x: 300, y: 200}
   m_MaxSize: {x: 24288, y: 16192}
   vertical: 0
-  controlID: 220
---- !u!114 &6
+  controlID: 99
+--- !u!114 &3
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -138,18 +64,18 @@ MonoBehaviour:
   m_Children: []
   m_Position:
     serializedVersion: 2
-    x: 1484
+    x: 1979
     y: 0
-    width: 436
-    height: 987
+    width: 581
+    height: 1307
   m_MinSize: {x: 276, y: 71}
   m_MaxSize: {x: 4001, y: 4021}
-  m_ActualView: {fileID: 17}
+  m_ActualView: {fileID: 13}
   m_Panes:
-  - {fileID: 17}
+  - {fileID: 13}
   m_Selected: 0
   m_LastSelected: 0
---- !u!114 &7
+--- !u!114 &4
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -166,16 +92,16 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 561
-    height: 588
-  m_MinSize: {x: 201, y: 221}
-  m_MaxSize: {x: 4001, y: 4021}
-  m_ActualView: {fileID: 18}
+    width: 748
+    height: 779
+  m_MinSize: {x: 200, y: 200}
+  m_MaxSize: {x: 4000, y: 4000}
+  m_ActualView: {fileID: 14}
   m_Panes:
-  - {fileID: 18}
+  - {fileID: 14}
   m_Selected: 0
   m_LastSelected: 0
---- !u!114 &8
+--- !u!114 &5
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -185,24 +111,24 @@ MonoBehaviour:
   m_Enabled: 1
   m_EditorHideFlags: 1
   m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: ConsoleWindow
+  m_Name: ProjectBrowser
   m_EditorClassIdentifier: 
   m_Children: []
   m_Position:
     serializedVersion: 2
     x: 0
-    y: 588
-    width: 1484
-    height: 399
-  m_MinSize: {x: 101, y: 121}
-  m_MaxSize: {x: 4001, y: 4021}
-  m_ActualView: {fileID: 21}
+    y: 779
+    width: 1979
+    height: 528
+  m_MinSize: {x: 231, y: 271}
+  m_MaxSize: {x: 10001, y: 10021}
+  m_ActualView: {fileID: 12}
   m_Panes:
-  - {fileID: 16}
-  - {fileID: 21}
-  m_Selected: 1
-  m_LastSelected: 0
---- !u!114 &9
+  - {fileID: 12}
+  - {fileID: 17}
+  m_Selected: 0
+  m_LastSelected: 1
+--- !u!114 &6
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -215,22 +141,22 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Children:
-  - {fileID: 10}
-  - {fileID: 5}
-  - {fileID: 11}
+  - {fileID: 7}
+  - {fileID: 2}
+  - {fileID: 8}
   m_Position:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1920
-    height: 1037
+    width: 2560
+    height: 1357
   m_MinSize: {x: 875, y: 300}
   m_MaxSize: {x: 10000, y: 10000}
   m_UseTopView: 1
   m_TopViewHeight: 30
   m_UseBottomView: 1
   m_BottomViewHeight: 20
---- !u!114 &10
+--- !u!114 &7
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -247,12 +173,12 @@ MonoBehaviour:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1920
+    width: 2560
     height: 30
   m_MinSize: {x: 0, y: 0}
   m_MaxSize: {x: 0, y: 0}
   m_LastLoadedLayoutName: 
---- !u!114 &11
+--- !u!114 &8
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -268,12 +194,12 @@ MonoBehaviour:
   m_Position:
     serializedVersion: 2
     x: 0
-    y: 1017
-    width: 1920
+    y: 1337
+    width: 2560
     height: 20
   m_MinSize: {x: 0, y: 0}
   m_MaxSize: {x: 0, y: 0}
---- !u!114 &12
+--- !u!114 &9
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -286,19 +212,19 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Children:
-  - {fileID: 13}
-  - {fileID: 8}
+  - {fileID: 10}
+  - {fileID: 5}
   m_Position:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1484
-    height: 987
+    width: 1979
+    height: 1307
   m_MinSize: {x: 200, y: 200}
   m_MaxSize: {x: 16192, y: 16192}
   vertical: 1
-  controlID: 170
---- !u!114 &13
+  controlID: 100
+--- !u!114 &10
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -311,19 +237,19 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Children:
-  - {fileID: 7}
-  - {fileID: 14}
+  - {fileID: 4}
+  - {fileID: 11}
   m_Position:
     serializedVersion: 2
     x: 0
     y: 0
-    width: 1484
-    height: 588
+    width: 1979
+    height: 779
   m_MinSize: {x: 200, y: 100}
   m_MaxSize: {x: 16192, y: 8096}
   vertical: 0
-  controlID: 171
---- !u!114 &14
+  controlID: 77
+--- !u!114 &11
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -333,74 +259,24 @@ MonoBehaviour:
   m_Enabled: 1
   m_EditorHideFlags: 1
   m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: GameView
+  m_Name: SceneView
   m_EditorClassIdentifier: 
   m_Children: []
   m_Position:
     serializedVersion: 2
-    x: 561
+    x: 748
     y: 0
-    width: 923
-    height: 588
-  m_MinSize: {x: 200, y: 200}
-  m_MaxSize: {x: 4000, y: 4000}
-  m_ActualView: {fileID: 20}
+    width: 1231
+    height: 779
+  m_MinSize: {x: 202, y: 221}
+  m_MaxSize: {x: 4002, y: 4021}
+  m_ActualView: {fileID: 15}
   m_Panes:
-  - {fileID: 19}
-  - {fileID: 20}
-  m_Selected: 1
-  m_LastSelected: 0
---- !u!114 &15
-MonoBehaviour:
-  m_ObjectHideFlags: 52
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 12043, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_MinSize: {x: 640, y: 580}
-  m_MaxSize: {x: 4000, y: 4000}
-  m_TitleContent:
-    m_Text: Build Settings
-    m_Image: {fileID: 0}
-    m_Tooltip: 
-  m_Pos:
-    serializedVersion: 2
-    x: 2783
-    y: 205
-    width: 640
-    height: 640
-  m_ViewDataDictionary: {fileID: 0}
-  m_OverlayCanvas:
-    m_LastAppliedPresetName: Default
-    m_SaveData: []
-  m_TreeViewState:
-    scrollPos: {x: 0, y: 0}
-    m_SelectedIDs: 
-    m_LastClickedID: 0
-    m_ExpandedIDs: 
-    m_RenameOverlay:
-      m_UserAcceptedRename: 0
-      m_Name: 
-      m_OriginalName: 
-      m_EditFieldRect:
-        serializedVersion: 2
-        x: 0
-        y: 0
-        width: 0
-        height: 0
-      m_UserData: 0
-      m_IsWaitingForDelay: 0
-      m_IsRenaming: 0
-      m_OriginalEventType: 11
-      m_IsRenamingFilename: 0
-      m_ClientGUIView: {fileID: 0}
-    m_SearchString: 
---- !u!114 &16
+  - {fileID: 15}
+  - {fileID: 16}
+  m_Selected: 0
+  m_LastSelected: 1
+--- !u!114 &12
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -421,10 +297,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -1920
-    y: 661
-    width: 1483
-    height: 378
+    x: -32000
+    y: -31191
+    width: 1978
+    height: 507
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default
@@ -442,22 +318,22 @@ MonoBehaviour:
     m_SkipHidden: 0
     m_SearchArea: 1
     m_Folders:
-    - Assets/Scripts/UI/NetwMenue
+    - Assets/Scripts
     m_Globs: []
     m_OriginalText: 
   m_ViewMode: 1
   m_StartGridSize: 64
   m_LastFolders:
-  - Assets/Scripts/UI/NetwMenue
+  - Assets/Scripts
   m_LastFoldersGridSize: -1
-  m_LastProjectPath: C:\Users\o-s-r\Documents\fau\Projekt_KI\OHNELEER\fresh\UFrameIT
+  m_LastProjectPath: D:\Users\marco\Dokuments\OneDrive\FAU\Informatik\UFrameIT\FrameIT\MaZiFAU
   m_LockTracker:
     m_IsLocked: 0
   m_FolderTreeState:
-    scrollPos: {x: 0, y: 202}
-    m_SelectedIDs: d2ee0000
-    m_LastClickedID: 61138
-    m_ExpandedIDs: 00000000a67e0000aa7e0000ac7e0000ae7e0000b07e0000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000c07e0000c27e0000c47e0000c67e0000c87e0000ca7e0000cc7e0000ce7e0000d07e0000d27e000000ca9a3bffffff7f
+    scrollPos: {x: 0, y: 0}
+    m_SelectedIDs: 0e730000
+    m_LastClickedID: 29454
+    m_ExpandedIDs: 00000000e872000000ca9a3b
     m_RenameOverlay:
       m_UserAcceptedRename: 0
       m_Name: 
@@ -485,7 +361,7 @@ MonoBehaviour:
     scrollPos: {x: 0, y: 0}
     m_SelectedIDs: 
     m_LastClickedID: 0
-    m_ExpandedIDs: 00000000a67e0000a87e0000aa7e0000ac7e0000ae7e0000b07e0000b27e0000b47e0000b67e0000b87e0000ba7e0000bc7e0000be7e0000c07e0000c27e0000c47e0000c67e0000c87e0000ca7e0000cc7e0000ce7e0000d07e0000d27e0000
+    m_ExpandedIDs: 00000000e8720000
     m_RenameOverlay:
       m_UserAcceptedRename: 0
       m_Name: 
@@ -510,8 +386,8 @@ MonoBehaviour:
       m_Icon: {fileID: 0}
       m_ResourceFile: 
   m_ListAreaState:
-    m_SelectedInstanceIDs: 1c560d00
-    m_LastClickedInstanceID: 874012
+    m_SelectedInstanceIDs: 
+    m_LastClickedInstanceID: 0
     m_HadKeyboardFocusLastEvent: 1
     m_ExpandedInstanceIDs: c6230000
     m_RenameOverlay:
@@ -529,7 +405,7 @@ MonoBehaviour:
       m_IsRenaming: 0
       m_OriginalEventType: 11
       m_IsRenamingFilename: 1
-      m_ClientGUIView: {fileID: 0}
+      m_ClientGUIView: {fileID: 5}
     m_CreateAssetUtility:
       m_EndAction: {fileID: 0}
       m_InstanceID: 0
@@ -541,7 +417,7 @@ MonoBehaviour:
     m_GridSize: 64
   m_SkipHiddenPackages: 0
   m_DirectoriesAreaWidth: 207
---- !u!114 &17
+--- !u!114 &13
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -562,10 +438,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -436
+    x: 1979
     y: 73
-    width: 435
-    height: 966
+    width: 580
+    height: 1286
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default
@@ -583,7 +459,7 @@ MonoBehaviour:
   m_LockTracker:
     m_IsLocked: 0
   m_PreviewWindow: {fileID: 0}
---- !u!114 &18
+--- !u!114 &14
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -604,10 +480,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -1920
+    x: 0
     y: 73
-    width: 560
-    height: 567
+    width: 747
+    height: 758
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default
@@ -615,9 +491,9 @@ MonoBehaviour:
   m_SceneHierarchy:
     m_TreeViewState:
       scrollPos: {x: 0, y: 0}
-      m_SelectedIDs: 
+      m_SelectedIDs: 68160000
       m_LastClickedID: 0
-      m_ExpandedIDs: 9cfcedffdefcedffde27eefffc6deeff066eeeff06a0eefffaadeeffe4bef6ffdc4ef7ff0e4ff7ff5a4ff7ff664ff7ff2e55f7ff3a55f7ff4455f7ff4e55f7ff5655f7ff6055f7ff8c55f7ff9655f7ff1c56f7ff4e56f7ff20dbfbff62dbfbff6006fcffd64bfcffe04bfcffd07dfcffbe8bfcfface0feffcae1feffcee1feffd4e1feff32e3fefffcf3feff0e14ffff6825ffff326bfffff8fafffffafaffff80630000badd0c00
+      m_ExpandedIDs: 0afbffff
       m_RenameOverlay:
         m_UserAcceptedRename: 0
         m_Name: 
@@ -633,7 +509,7 @@ MonoBehaviour:
         m_IsRenaming: 0
         m_OriginalEventType: 11
         m_IsRenamingFilename: 0
-        m_ClientGUIView: {fileID: 7}
+        m_ClientGUIView: {fileID: 4}
       m_SearchString: 
     m_ExpandedScenes: []
     m_CurrenRootInstanceID: 0
@@ -641,7 +517,7 @@ MonoBehaviour:
       m_IsLocked: 0
     m_CurrentSortingName: TransformSorting
   m_WindowGUID: 4c969a2b90040154d917609493e03593
---- !u!114 &19
+--- !u!114 &15
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -662,10 +538,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -1326
-    y: 98
-    width: 858
-    height: 441
+    x: 748
+    y: 73
+    width: 1229
+    height: 758
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default
@@ -889,9 +765,9 @@ MonoBehaviour:
   m_PlayAudio: 0
   m_AudioPlay: 0
   m_Position:
-    m_Target: {x: 0, y: 0, z: 0}
+    m_Target: {x: 719.735, y: 501.2356, z: 37.53131}
     speed: 2
-    m_Value: {x: 0, y: 0, z: 0}
+    m_Value: {x: 719.735, y: 501.2356, z: 37.53131}
   m_RenderMode: 0
   m_CameraMode:
     drawMode: 0
@@ -938,13 +814,13 @@ MonoBehaviour:
     m_GridAxis: 1
     m_gridOpacity: 0.5
   m_Rotation:
-    m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
+    m_Target: {x: 0.0662581, y: -0.0089846505, z: 0.0005970661, w: 0.997763}
     speed: 2
-    m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
+    m_Value: {x: 0.06625803, y: -0.008984641, z: 0.00059706543, w: 0.9977619}
   m_Size:
-    m_Target: 14.562745
+    m_Target: 546.43884
     speed: 2
-    m_Value: 14.562745
+    m_Value: 546.43884
   m_Ortho:
     m_Target: 0
     speed: 2
@@ -969,7 +845,7 @@ MonoBehaviour:
   m_SceneVisActive: 1
   m_LastLockedObject: {fileID: 0}
   m_ViewIsLockedToObject: 0
---- !u!114 &20
+--- !u!114 &16
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -990,10 +866,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -1359
+    x: 748
     y: 73
-    width: 921
-    height: 567
+    width: 1229
+    height: 758
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default
@@ -1028,7 +904,7 @@ MonoBehaviour:
     m_VAllowExceedBaseRangeMin: 1
     m_VAllowExceedBaseRangeMax: 1
     m_ScaleWithWindow: 0
-    m_HSlider: 1
+    m_HSlider: 0
     m_VSlider: 0
     m_IgnoreScrollWheelUntilClicked: 0
     m_EnableMouseInput: 1
@@ -1040,29 +916,29 @@ MonoBehaviour:
       serializedVersion: 2
       x: 0
       y: 21
-      width: 921
-      height: 546
-    m_Scale: {x: 0.47968754, y: 0.47968754}
-    m_Translation: {x: 460.5, y: 273}
+      width: 1229
+      height: 737
+    m_Scale: {x: 0.6401042, y: 0.6401042}
+    m_Translation: {x: 614.5, y: 368.5}
     m_MarginLeft: 0
     m_MarginRight: 0
     m_MarginTop: 0
     m_MarginBottom: 0
     m_LastShownAreaInsideMargins:
       serializedVersion: 2
-      x: -959.99994
-      y: -569.1205
-      width: 1919.9999
-      height: 1138.241
+      x: -960
+      y: -575.68756
+      width: 1920
+      height: 1151.3751
     m_MinimalGUI: 1
-  m_defaultScale: 0.4796875
-  m_LastWindowPixelSize: {x: 921, y: 567}
+  m_defaultScale: 0.6401042
+  m_LastWindowPixelSize: {x: 1229, y: 758}
   m_ClearInEditMode: 1
   m_NoCameraWarning: 1
   m_LowResolutionForAspectRatios: 01000000000000000000
   m_XRRenderMode: 0
   m_RenderTexture: {fileID: 0}
---- !u!114 &21
+--- !u!114 &17
 MonoBehaviour:
   m_ObjectHideFlags: 52
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1083,10 +959,10 @@ MonoBehaviour:
     m_Tooltip: 
   m_Pos:
     serializedVersion: 2
-    x: -1920
-    y: 661
-    width: 1483
-    height: 378
+    x: 0
+    y: 852
+    width: 1978
+    height: 507
   m_ViewDataDictionary: {fileID: 0}
   m_OverlayCanvas:
     m_LastAppliedPresetName: Default