diff --git a/Assets/Resources/Prefabs/Facts/Angle.prefab b/Assets/Resources/Prefabs/Facts/Angle.prefab
index 97ed6895f00fe59572c344f38561c3711ef1ed86..8d1a734371df68e56944acf15410634f01dbdb64 100644
--- a/Assets/Resources/Prefabs/Facts/Angle.prefab
+++ b/Assets/Resources/Prefabs/Facts/Angle.prefab
@@ -299,15 +299,14 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
+  FactText:
+  - {fileID: 3527746868028771423}
+  - {fileID: 6234540560952625969}
+  StringLabelFormats:
+  - '{0}'
+  - '{0}'
   renderer:
   - {fileID: 3394522495515098202}
-  cascade: []
   Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
   Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
   Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
@@ -325,6 +324,7 @@ GameObject:
   - component: {fileID: 3394522496185282005}
   - component: {fileID: 3394522496185282006}
   - component: {fileID: 3394522496185282007}
+  - component: {fileID: 8694869230573919100}
   m_Layer: 12
   m_Name: AngleInner
   m_TagString: Selectable
@@ -427,6 +427,29 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   radius: 0.95
   height: 0.01
+--- !u!114 &8694869230573919100
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3394522496185282000}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText:
+  - {fileID: 3527746868028771423}
+  - {fileID: 6234540560952625969}
+  StringLabelFormats:
+  - '{0}'
+  - '{0}'
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &7144232170300037021
 GameObject:
   m_ObjectHideFlags: 0
@@ -436,6 +459,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 5781467132517744785}
+  - component: {fileID: 8440018597956601917}
   m_Layer: 12
   m_Name: Angle
   m_TagString: Selectable
@@ -459,6 +483,29 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8440018597956601917
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7144232170300037021}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText:
+  - {fileID: 3527746868028771423}
+  - {fileID: 6234540560952625969}
+  StringLabelFormats:
+  - '{0}'
+  - '{0}'
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &8247887023038618208
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/Facts/Circle.prefab b/Assets/Resources/Prefabs/Facts/Circle.prefab
index dffff6e9f95c3a2115460120bdbfea00a77778b9..f58a40eb2203b7ca369e92069d394369705280fd 100644
--- a/Assets/Resources/Prefabs/Facts/Circle.prefab
+++ b/Assets/Resources/Prefabs/Facts/Circle.prefab
@@ -12,6 +12,7 @@ GameObject:
   - component: {fileID: 1312883106029576503}
   - component: {fileID: 5284903402926663935}
   - component: {fileID: 2574848627300415222}
+  - component: {fileID: 7280041197286401157}
   m_Layer: 15
   m_Name: Mesh Down
   m_TagString: SnapZone
@@ -27,7 +28,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 3319392661904935552}
   m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalPosition: {x: 0, y: -0.01, z: 0}
   m_LocalScale: {x: 1, y: 0.01, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
@@ -99,6 +100,25 @@ MeshCollider:
   m_Convex: 1
   m_CookingOptions: 30
   m_Mesh: {fileID: 0}
+--- !u!114 &7280041197286401157
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3319392661904935552}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText: []
+  StringLabelFormats: []
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &4682201382595328041
 GameObject:
   m_ObjectHideFlags: 0
@@ -116,7 +136,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!4 &6787775389045427190
 Transform:
   m_ObjectHideFlags: 0
@@ -277,6 +297,7 @@ GameObject:
   - component: {fileID: 7167210412035754299}
   - component: {fileID: 1078883255209641429}
   - component: {fileID: 8526453253978894086}
+  - component: {fileID: -7239156242830623982}
   m_Layer: 15
   m_Name: Mesh Up
   m_TagString: SnapZone
@@ -292,7 +313,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 6262947649539239553}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalPosition: {x: 0, y: 0.01, z: 0}
   m_LocalScale: {x: 1, y: 0.01, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
@@ -364,6 +385,25 @@ MeshCollider:
   m_Convex: 1
   m_CookingOptions: 30
   m_Mesh: {fileID: 0}
+--- !u!114 &-7239156242830623982
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6262947649539239553}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText: []
+  StringLabelFormats: []
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &6839596689016440457
 GameObject:
   m_ObjectHideFlags: 0
@@ -430,15 +470,10 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
+  FactText: []
+  StringLabelFormats: []
   renderer:
   - {fileID: 1078883255209641429}
-  cascade: []
   Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
   Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
   Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
diff --git a/Assets/Resources/Prefabs/Facts/Line.prefab b/Assets/Resources/Prefabs/Facts/Line.prefab
index 97d90b5c2d3568872f7e15725b472a7c2f48b730..9da29198ba8341ff37f9d4928ef83f2cdf871860 100644
--- a/Assets/Resources/Prefabs/Facts/Line.prefab
+++ b/Assets/Resources/Prefabs/Facts/Line.prefab
@@ -9,6 +9,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 5818562496562931847}
+  - component: {fileID: 2028494018615604281}
   m_Layer: 11
   m_Name: Line
   m_TagString: Selectable
@@ -33,6 +34,27 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2028494018615604281
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2317807655120713368}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText:
+  - {fileID: 1723009895384754658}
+  StringLabelFormats:
+  - '{0}'
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &4853696702160906218
 GameObject:
   m_ObjectHideFlags: 0
@@ -348,9 +370,9 @@ GameObject:
   - component: {fileID: 3517099398133763913}
   - component: {fileID: 6398251481098695290}
   - component: {fileID: 6015977261426572496}
-  - component: {fileID: 9069160241511124499}
   - component: {fileID: 6179051021116985022}
   - component: {fileID: 9072308735336053453}
+  - component: {fileID: 184519196497952346}
   m_Layer: 11
   m_Name: LineOuter
   m_TagString: SnapZone
@@ -423,31 +445,6 @@ MeshRenderer:
   m_SortingLayer: 0
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
---- !u!114 &9069160241511124499
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6378548342073962023}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
-  renderer:
-  - {fileID: 6015977261426572496}
-  cascade: []
-  Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  Solution: {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
 --- !u!65 &6179051021116985022
 BoxCollider:
   m_ObjectHideFlags: 0
@@ -481,6 +478,26 @@ Animator:
   m_HasTransformHierarchy: 1
   m_AllowConstantClipSamplingOptimization: 1
   m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!114 &184519196497952346
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6378548342073962023}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText: []
+  StringLabelFormats: []
+  renderer:
+  - {fileID: 6015977261426572496}
+  Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
+  Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
+  Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
+  Solution: {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
 --- !u!1 &6754103560634016048
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/Facts/Point.prefab b/Assets/Resources/Prefabs/Facts/Point.prefab
index 2e66ce013b0318d2bcec5c37a159d992a299236e..9ea49bf45ccc46274887b99d43bd8fc5bc824a73 100644
--- a/Assets/Resources/Prefabs/Facts/Point.prefab
+++ b/Assets/Resources/Prefabs/Facts/Point.prefab
@@ -115,15 +115,12 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
+  FactText:
+  - {fileID: 4028707725789292921}
+  StringLabelFormats:
+  - '{0}'
   renderer:
   - {fileID: 1075046474335495899}
-  cascade: []
   Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
   Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
   Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
@@ -339,6 +336,7 @@ GameObject:
   m_Component:
   - component: {fileID: 1897634834899172406}
   - component: {fileID: 2282314938058693146}
+  - component: {fileID: -1711701745619400267}
   m_Layer: 10
   m_Name: SnapSphere
   m_TagString: SnapZone
@@ -374,6 +372,25 @@ SphereCollider:
   serializedVersion: 2
   m_Radius: 0.5
   m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &-1711701745619400267
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3501726312507320707}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText: []
+  StringLabelFormats: []
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &7522635739010457072
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/Facts/Ray.prefab b/Assets/Resources/Prefabs/Facts/Ray.prefab
index 7362fd75119ea21e039628917517f80a38e7e4f1..e1d3fca669be928979ac2c93cfbeee65af4da33e 100644
--- a/Assets/Resources/Prefabs/Facts/Ray.prefab
+++ b/Assets/Resources/Prefabs/Facts/Ray.prefab
@@ -9,6 +9,7 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 5818562496562931847}
+  - component: {fileID: 4167478318603126375}
   m_Layer: 13
   m_Name: Ray
   m_TagString: Selectable
@@ -33,6 +34,27 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4167478318603126375
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2317807655120713368}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText:
+  - {fileID: 1723009895384754658}
+  StringLabelFormats:
+  - '{0}'
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &2715767601543569183
 GameObject:
   m_ObjectHideFlags: 0
@@ -435,15 +457,10 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
+  FactText: []
+  StringLabelFormats: []
   renderer:
   - {fileID: 6015977261426572496}
-  cascade: []
   Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
   Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
   Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
diff --git a/Assets/Resources/Prefabs/Facts/Ring.prefab b/Assets/Resources/Prefabs/Facts/Ring.prefab
index a61092489428fe7c69537ccf090903cdf500f872..12e9010936ceda8be3e716bd49fdcd713a07d473 100644
--- a/Assets/Resources/Prefabs/Facts/Ring.prefab
+++ b/Assets/Resources/Prefabs/Facts/Ring.prefab
@@ -288,15 +288,10 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  URI: 
-  materials:
-  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
-  - {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
-  - {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
-  - {fileID: 2100000, guid: 2a003f0807acc1142965bb21bdc824f6, type: 2}
+  FactText: []
+  StringLabelFormats: []
   renderer:
   - {fileID: 4181090182545414655}
-  cascade: []
   Default: {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
   Selected: {fileID: 2100000, guid: 34a95baef388bb8458c97a626b732f9f, type: 2}
   Hint: {fileID: 2100000, guid: 8621b710d7d1d5041bc6bfd0cc37cdff, type: 2}
@@ -446,6 +441,7 @@ GameObject:
   m_Component:
   - component: {fileID: 2014127074789226423}
   - component: {fileID: 2449733549921447938}
+  - component: {fileID: 3963086670126537751}
   m_Layer: 14
   m_Name: Ring
   m_TagString: Selectable
@@ -487,6 +483,27 @@ MonoBehaviour:
   ringSegmentCount: 50
   segmentSideCount: 30
   torusMesh: {fileID: 6307794999199274257}
+--- !u!114 &3963086670126537751
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7644263571880024739}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  FactText:
+  - {fileID: 1254072669719294581}
+  StringLabelFormats:
+  - '{0}'
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
 --- !u!1 &8117705180640636930
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Resources/Prefabs/Stage_Default.prefab b/Assets/Resources/Prefabs/Stage_Default.prefab
index 4172763d3939f2591f8342de3eab683a43bdf1e7..81d29468d328d7e2cdb94e0d421d0656731029e6 100644
--- a/Assets/Resources/Prefabs/Stage_Default.prefab
+++ b/Assets/Resources/Prefabs/Stage_Default.prefab
@@ -2246,7 +2246,7 @@ PrefabInstance:
     - target: {fileID: 861183262417667852, guid: b996060e27da25c498842defc1996d84,
         type: 3}
       propertyPath: m_Value
-      value: 1
+      value: 0
       objectReference: {fileID: 0}
     - target: {fileID: 861183262417667854, guid: b996060e27da25c498842defc1996d84,
         type: 3}
diff --git a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
index 884c0b8ca44f5f7134efc3dc00f7bb940e166755..3a97fdcbbdf1c0ee4cd5086a3050a3a467df8c8d 100644
--- a/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/FactIcons/DisplayTestFact.prefab
@@ -35,7 +35,8 @@ RectTransform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
+  m_Children:
+  - {fileID: 5306809593801141744}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -132,8 +133,10 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  FactText: []
-  StringLabelFormats: []
+  FactText:
+  - {fileID: 6086025492030478819}
+  StringLabelFormats:
+  - '{0}'
   renderer: []
   Default: {fileID: 0}
   Selected: {fileID: 0}
@@ -167,3 +170,138 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   favoriteDisplayPrefab: {fileID: 2810062559722195091, guid: 0b34469213856774980670de85a7d4a0,
     type: 3}
+--- !u!1 &6391605716120646375
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5306809593801141744}
+  - component: {fileID: 4435419560705582795}
+  - component: {fileID: 6086025492030478819}
+  m_Layer: 5
+  m_Name: point
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5306809593801141744
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6391605716120646375}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 6755804354927699367}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: -25}
+  m_SizeDelta: {x: 100, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4435419560705582795
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6391605716120646375}
+  m_CullTransparentMesh: 0
+--- !u!114 &6086025492030478819
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6391605716120646375}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: A
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+  m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4278190080
+  m_fontColor: {r: 0, g: 0, b: 0, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 36
+  m_fontSizeBase: 36
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 0
+  m_HorizontalAlignment: 2
+  m_VerticalAlignment: 512
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 1
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
diff --git a/Assets/Resources/Prefabs/UI/Icons/GadgetButton.prefab b/Assets/Resources/Prefabs/UI/Icons/GadgetButton.prefab
index 502f249b7914ccad2920db9dc09163e454de2e1e..e108a5f1a3804dcb635e688356175c6a26e25382 100644
--- a/Assets/Resources/Prefabs/UI/Icons/GadgetButton.prefab
+++ b/Assets/Resources/Prefabs/UI/Icons/GadgetButton.prefab
@@ -12,8 +12,9 @@ GameObject:
   - component: {fileID: 4469453702329312233}
   - component: {fileID: 565795937736748943}
   - component: {fileID: 6315983451093957514}
-  - component: {fileID: 6972799681139387453}
   - component: {fileID: 1550777745310495707}
+  - component: {fileID: 6845160251704569511}
+  - component: {fileID: 8946782148301631239}
   m_Layer: 5
   m_Name: GadgetButton
   m_TagString: Untagged
@@ -123,7 +124,7 @@ MonoBehaviour:
   m_OnClick:
     m_PersistentCalls:
       m_Calls: []
---- !u!114 &6972799681139387453
+--- !u!114 &1550777745310495707
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -132,10 +133,12 @@ MonoBehaviour:
   m_GameObject: {fileID: 5345241908758045532}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: ed0bcd3d8d9996d4f86c0a2b8b71c6bf, type: 3}
+  m_Script: {fileID: 11500000, guid: a1ed516d861fa2c45a2b1767d1217acb, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
---- !u!114 &1550777745310495707
+  factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
+    type: 3}
+--- !u!114 &6845160251704569511
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -144,8 +147,26 @@ MonoBehaviour:
   m_GameObject: {fileID: 5345241908758045532}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: a1ed516d861fa2c45a2b1767d1217acb, type: 3}
+  m_Script: {fileID: 11500000, guid: 626c435b76e0d334f959ede8b54b07ac, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  factExplorerPrefab: {fileID: 5592893003942163674, guid: ff7415df1aac19c41a7855516a108a8a,
-    type: 3}
+  FactText: []
+  StringLabelFormats: []
+  renderer: []
+  Default: {fileID: 0}
+  Selected: {fileID: 0}
+  Hint: {fileID: 0}
+  Solution: {fileID: 0}
+--- !u!114 &8946782148301631239
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5345241908758045532}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a091cb23127eb7347955cb7f747af431, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  dragged: 0
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactObject.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactObject.cs
index 63cdc1a85b104ffb4d948c96c9c8bd94ab685813..021eee079ed970f95e348ae1886c7a6492838316 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/FactObject.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/FactObject.cs
@@ -4,11 +4,12 @@
 using UnityEngine;
 using System.Collections;
 using TMPro;
+using UnityEditor;
 
 /// <summary>
 /// <see cref="Fact.Id"/>/ <c>MonoBehaviour</c> wrapper to be attached to <see cref="Fact.Representation"/>
 /// </summary>
-[DisallowMultipleComponent]
+//[DisallowMultipleComponent]
 public class FactObject : MonoBehaviour, ISerializationCallbackReceiver
 {
     /// <summary>
@@ -21,7 +22,7 @@ public string URI
         {
             _Fact = null;
             _URI = value;
-            ReLabel();
+            FactUpdated();
         }
     }
     private string _URI;
@@ -40,7 +41,7 @@ public Fact Fact
         {
             _Fact = value;
             _URI = value.Id;
-            ReLabel();
+            FactUpdated();
         }
     }
     private Fact _Fact;
@@ -54,14 +55,14 @@ public enum FactMaterials
     }
 
 
-    [SerializeField] private List<TextMeshProUGUI> FactText;
-    [SerializeField] private List<string> StringLabelFormats;
+    [SerializeField] protected List<TMP_Text> FactText;
+    [SerializeField] protected List<string> StringLabelFormats;
 
     [NonSerialized]
     public Material[] materials;
     public new Renderer[] renderer;
     [NonSerialized]
-    private List<FactObject> cascade;
+    protected List<FactObject> AllChildren;
 
     #region Unity Serialization
     public Material Default;
@@ -74,15 +75,16 @@ void ISerializationCallbackReceiver.OnBeforeSerialize()
         if (FactText == null || FactText.Count() == 0)
         {
             FactText = transform
-                .GetComponentsInChildren<TextMeshProUGUI>(includeInactive: true)
+                .GetComponentsInChildren<TMP_Text>(includeInactive: true)
                 .ToList();
         }
 
         {
             StringLabelFormats ??= new();
 
-            int i = Math.Min(FactText.Count(), StringLabelFormats.Count());
-            int end = Math.Max(FactText.Count(), StringLabelFormats.Count());
+            int i = StringLabelFormats.Count();
+            int end = FactText.Count();
+
             for (; i < end; i++)
                 StringLabelFormats.Add("{" + (i + 1) + "}");
         }
@@ -94,6 +96,21 @@ void ISerializationCallbackReceiver.OnBeforeSerialize()
             Hint = materials[(int)FactMaterials.Hint];
             Solution = materials[(int)FactMaterials.Solution];
         }
+
+#if UNITY_EDITOR // not working
+        if (EditorApplication.isPlaying)
+            return;
+
+        foreach (Collider collider in transform.GetComponentsInChildren<Collider>(includeInactive: true))
+        {
+            if (!collider.gameObject.GetComponent<FactObject>())
+                try
+                {
+                    collider.gameObject.AddComponent<FactObject>();
+                }
+                catch(Exception) { }
+        }
+#endif
     }
 
     void ISerializationCallbackReceiver.OnAfterDeserialize()
@@ -110,15 +127,32 @@ void ISerializationCallbackReceiver.OnAfterDeserialize()
 
     private void Awake()
     {
-        cascade = new() { this, };
-        cascade.AddRange(transform.GetComponentsInChildren<FactObject>(includeInactive: true));
+        AllChildren = transform.GetComponentsInChildren<FactObject>(includeInactive: true).ToList();
+        AllChildren.Remove(this);
+    }
+
+    protected virtual void FactUpdated()
+    {
+        Awake();
+
+        ReLabel();
+
+        foreach (FactObject childObject in AllChildren)
+        {
+            childObject._URI = _URI;
+            childObject._Fact = null;
+            childObject.FactUpdated();
+        }
     }
 
     public void ReLabel()
     {
         string[] mother_child_labels =
             new[] { URI }.ShallowCloneAppend(Fact.DependentFactIds)
-            .Select(fid => FactOrganizer.AllFacts[fid].Label)
+            .Select(fid =>
+                FactOrganizer.AllFacts.TryGetValue(fid, out Fact fact)
+                ? fact.Label
+                : "N/A")
             .ToArray();
 
         string indexoverflow = "{" + mother_child_labels.Length.ToString() + "}";
@@ -132,11 +166,21 @@ public void ReLabel()
             }
             FactText[i].text = string.Format(StringLabelFormats[i], mother_child_labels);
         }
+
+        switch (Fact) // for highly customized labels
+        {
+            case TestFact testFact:
+                //FactText[0].text = testFact.Label;
+                break;
+            default:
+                break;
+        }
     }
 
-    public void CascadeForChildren(Action<FactObject> func)
+    public void CascadeForMeAndChildren(Action<FactObject> func)
     {
-        foreach (FactObject fo in cascade)
+        func(this);
+        foreach (FactObject fo in AllChildren)
             func(fo);
     }
 
@@ -146,12 +190,13 @@ public void ForAllRenderer(Action<Renderer> func)
             func(ren);
     }
 
-    public void CoroutineCascadeForChildrenAllRenderer(Func<FactObject, Renderer, IEnumerator> func)
+    public void CoroutineCascadeForMeAndChildrenAllRenderer(Func<FactObject, Renderer, IEnumerator> func)
     {
         this.StopAllCoroutines();
 
-        foreach (FactObject fo in cascade)
-            foreach (Renderer ren in fo.renderer)
-                StartCoroutine(func(fo, ren));
+        CascadeForMeAndChildren((FactObject fo) =>
+            fo.ForAllRenderer((Renderer ren) =>
+                StartCoroutine(func(fo, ren))
+        ));
     }
 }
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs
index a68fa0f207ebf9a8045428f92b291315107d7c3d..8e4ed366f64541e3167c8b214989b1e178ea164c 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/FactSpawner.cs
@@ -57,9 +57,9 @@ public void SpawnAttachedPositionFunction(AttachedPositionFunction fact)
     public void SpawnPoint(PointFact fact)
     {
         GameObject point = GameObject.Instantiate(Sphere);
-        point.transform.SetPositionAndRotation(fact.Position, fact.Rotation);
-        point.GetComponentInChildren<TextMeshPro>().text = fact.Label;
         point.GetComponent<FactObject>().URI = fact.Id;
+        point.transform.SetPositionAndRotation(fact.Position, fact.Rotation);
+        //point.GetComponentInChildren<TextMeshPro>().text = fact.Label;
         fact.Representation = point;
     }
 
@@ -67,6 +67,7 @@ public void SpawnLine(LineFact fact)
     {
         //Change FactRepresentation to Line
         GameObject line = GameObject.Instantiate(Line);
+        line.GetComponentInChildren<FactObject>().URI = fact.Id;
         //Place the Line in the centre of the two points
         line.transform.position = fact.Position;
 
@@ -77,7 +78,6 @@ public void SpawnLine(LineFact fact)
 
         line.GetComponentInChildren<TextMeshPro>().text =
             fact.Label + " = " + Math.Round(fact.Distance, 2) + " m";
-        line.GetComponentInChildren<FactObject>().URI = fact.Id;
 
         fact.Representation = line;
     }
@@ -86,6 +86,7 @@ public void SpawnRay(RayFact fact)
     {
         //Change FactRepresentation to Line
         GameObject line = GameObject.Instantiate(Ray);
+        line.GetComponentInChildren<FactObject>().URI = fact.Id;
         //Place the Line in the centre of the two points
         line.transform.position = fact.Position;
 
@@ -94,8 +95,7 @@ public void SpawnRay(RayFact fact)
         line.transform.GetChild(0).localScale = fact.LocalScale;
         line.transform.GetChild(0).rotation = fact.Rotation;
 
-        line.GetComponentInChildren<TextMeshPro>().text = fact.Label;
-        line.GetComponentInChildren<FactObject>().URI = fact.Id;
+        //line.GetComponentInChildren<TextMeshPro>().text = fact.Label;
 
         fact.Representation = line;
     }
@@ -109,6 +109,7 @@ public void SpawnAngle(AbstractAngleFact fact)
 
         //Change FactRepresentation to Angle
         GameObject angle = GameObject.Instantiate(Angle);
+        angle.GetComponentInChildren<FactObject>().URI = fact.Id;
 
         //Place the Angle at position of point2
         angle.transform.SetPositionAndRotation(Psotion, Rotation);
@@ -126,7 +127,6 @@ public void SpawnAngle(AbstractAngleFact fact)
         foreach (CircleSegmentGenerator c in segments)
             c.setAngle(angleValue);
 
-        angle.GetComponentInChildren<FactObject>().URI = fact.Id;
         fact.Representation = angle;
     }
 
@@ -145,17 +145,14 @@ public void SpawnRingAndCircle(CircleFact fact)
     public void SpawnRing(CircleFact circleFact, Transform parent = null)
     {
         GameObject ring = GameObject.Instantiate(Ring, parent);
-        var tori = ring.GetComponentsInChildren<TorusGenerator>();
-        var tmpText = ring.GetComponentInChildren<TextMeshPro>();
-        var FactObj = ring.GetComponentInChildren<FactObject>();
+        ring.GetComponentInChildren<FactObject>().URI = circleFact.Id;
 
-        //Set radii
+        var tori = ring.GetComponentsInChildren<TorusGenerator>();
         foreach (var torus in tori)
             torus.torusRadius = circleFact.radius;
 
-        tmpText.text = $"â—‹{circleFact.Point1.Label}";
-
-        FactObj.URI = circleFact.Id;
+        //var tmpText = ring.GetComponentInChildren<TextMeshPro>();
+        //tmpText.text = $"â—‹{circleFact.Point1.Label}";
     }
 
     public void SpawnCircle(CircleFact circleFact, Transform parent = null)
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/FunctionFact.cs b/Assets/Scripts/InteractionEngine/FactHandling/Facts/FunctionFact.cs
index 99686910265f3f2a55bdc96ce3ffb2014cf1929e..d77e7f88582b9ce034551e37b7deec07271c1bfd 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/Facts/FunctionFact.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/FunctionFact.cs
@@ -185,7 +185,7 @@ public class AttachedPositionFunction : FactWrappedCRTP<AttachedPositionFunction
     public Fact Fact => FactOrganizer.AllFacts[fid];
 
     [JsonIgnore]
-    public FunctionCallFact[] FunctionFacts
+    public FunctionCallFact[] FunctionCallFacts
         => func_call_ids.Select(f => FactOrganizer.AllFacts[f] as FunctionCallFact).ToArray();
 
     /// <summary>\copydoc Fact.Fact()</summary>
@@ -196,7 +196,7 @@ public AttachedPositionFunction(string fid, string[] funcids, FactOrganizer orga
     {
         init(fid, funcids);
         //TODO: call MMT, set URI
-        _URI = Fact.Id + "{" + string.Join(", ", FunctionFacts.Select(f => f.Id)) + "}";
+        _URI = Fact.Id + "{" + string.Join(", ", FunctionCallFacts.Select(f => f.Id)) + "}";
     }
 
     private void init(string fid, string[] funcids)
@@ -229,7 +229,7 @@ protected override string[] GetGetDependentFactIds()
         => new string[] { fid }.ShallowCloneAppend(func_call_ids);
 
     public override int GetHashCode()
-        => Fact.GetHashCode() ^ FunctionFacts.GetHashCode();
+        => Fact.GetHashCode() ^ FunctionCallFacts.GetHashCode();
 
     protected override bool EquivalentWrapped(AttachedPositionFunction f1, AttachedPositionFunction f2)
         => DependentFactsEquivalent(f1, f2);
diff --git a/Assets/Scripts/InteractionEngine/ShinyThings.cs b/Assets/Scripts/InteractionEngine/ShinyThings.cs
index 4be58172dadf90d03b6ab2905becc641544d11f2..7a07335331629086734868bf185d30585c80b9ac 100644
--- a/Assets/Scripts/InteractionEngine/ShinyThings.cs
+++ b/Assets/Scripts/InteractionEngine/ShinyThings.cs
@@ -75,7 +75,7 @@ private void HighlightCurserHit(RaycastHit hit)
         }
 
         void ApplyMaterial(FactObject root, Material new_mat) =>
-            root.CoroutineCascadeForChildrenAllRenderer(
+            root.CoroutineCascadeForMeAndChildrenAllRenderer(
                 (_, renderer) =>
                     renderer.ProgrammMaterialChange(new[] {
                             (0f, lerpTime, new_mat),
@@ -90,7 +90,7 @@ public static void HighlightFact(Fact startFact, FactObject.FactMaterials tmp_ma
 
         FactObject selected_fact_obj = startFact.Representation.GetComponentInChildren<FactObject>();
 
-        selected_fact_obj.CoroutineCascadeForChildrenAllRenderer(
+        selected_fact_obj.CoroutineCascadeForMeAndChildrenAllRenderer(
             (fact_obj, renderer) =>
                 renderer.ProgrammMaterialChange(new[] {
                     (0f, lerpTime, fact_obj.materials[(int) tmp_mat]),
diff --git a/Assets/Scripts/InteractionEngine/TBD/AttachedPositionFunctionBehaviour.cs b/Assets/Scripts/InteractionEngine/TBD/AttachedPositionFunctionBehaviour.cs
index 91c99ec4e661cb0c7f9547638b0ba8b9ab4a6b2b..b48e502a3aeef8d76af8ca06b6d3833122f1148f 100644
--- a/Assets/Scripts/InteractionEngine/TBD/AttachedPositionFunctionBehaviour.cs
+++ b/Assets/Scripts/InteractionEngine/TBD/AttachedPositionFunctionBehaviour.cs
@@ -49,18 +49,33 @@ public void NewExecutingInstance()
         if (!original)
             return;
 
+        GameObject clone = Instantiate(gameObject);
+        clone.GetComponent<FactObject>().URI = (Fact as AttachedPositionFunction).Fact.Id;
+
         AttachedPositionFunctionBehaviour cloneComp = 
-            GameObject.Instantiate(gameObject)//, gameObject.transform)
-            .GetComponent<AttachedPositionFunctionBehaviour>();
-        cloneComp.Start();
+            clone.GetComponent<AttachedPositionFunctionBehaviour>();
+        cloneComp.URI = URI;
         cloneComp.original = false;
+
+        cloneComp.Start();
         cloneComp.StartExecution();
     }
 
+    private void Awake()
+    {
+        // TODO! SE: not great, but terrible
+        AllChildren = new();
+        FactText = new();
+        StringLabelFormats = new();
+    }
+
+    // TODO! SE: not great, but terrible
+    protected override void FactUpdated() { }
+
     private void Start()
     {
         startcondition = transform;
-        f_t_to_pos = (Fact as AttachedPositionFunction).FunctionFacts.ToList();
+        f_t_to_pos = (Fact as AttachedPositionFunction).FunctionCallFacts.ToList();
     }
 
     private void OnEnable()
diff --git a/Assets/Scripts/InventoryStuff/DropHandling.cs b/Assets/Scripts/InventoryStuff/DropHandling.cs
index 0fea168fd3859328d609597f464aca85fb1c5df7..fe6352972fcb2e700297a1a0d42b641ae2645b65 100644
--- a/Assets/Scripts/InventoryStuff/DropHandling.cs
+++ b/Assets/Scripts/InventoryStuff/DropHandling.cs
@@ -11,7 +11,7 @@ public void OnDrop(PointerEventData eventData)
 
         var scrollFact = gameObject.GetComponent<RenderedScrollFact>();
         Debug.Log(eventData.pointerDrag.GetComponent<FactObject>().Fact.Label + " was dropped on "
-            + gameObject.name + " " + scrollFact.ID + "/" +
+            + gameObject.name + " " + (scrollFact.ID + 1) + "/" +
             ScrollDetails.ParameterDisplays.Count + " label: " + scrollFact.Label);
 
         Destroy(current);
diff --git a/Assets/Scripts/MeshGenerator/ConeGenerator.cs b/Assets/Scripts/MeshGenerator/ConeGenerator.cs
index 717cd56f47be2883e74198b4da2007083e828bdf..73cc683360f1c588a9765645aa395ea5824a5fc0 100644
--- a/Assets/Scripts/MeshGenerator/ConeGenerator.cs
+++ b/Assets/Scripts/MeshGenerator/ConeGenerator.cs
@@ -29,6 +29,9 @@ protected override void GenerateShape()
         Vector3[] bottomCircle = GetCirclePoints(bottomRadius, sideCount);
         Vector3[] topCircle = GetCirclePoints(topRadius, sideCount, topPosition);
 
+        if (sideMesh == null || topMesh == null || bottomMesh == null)
+            return;
+
         //side
         if (sideMesh.sharedMesh != null)
             sideMesh.sharedMesh.Clear();
diff --git a/Assets/Scripts/MeshGenerator/TorusGenerator.cs b/Assets/Scripts/MeshGenerator/TorusGenerator.cs
index ab05a78233c7656f78b9b0ebb88aa4dbac822080..f93ed849f69c59034ca85c11e64119590a6d24d0 100644
--- a/Assets/Scripts/MeshGenerator/TorusGenerator.cs
+++ b/Assets/Scripts/MeshGenerator/TorusGenerator.cs
@@ -22,6 +22,9 @@ public class TorusGenerator : ShapeGenerator
     #region Implementation
     protected override void GenerateShape()
     {
+        if (torusMesh == null)
+            return;
+
         if (torusMesh.sharedMesh != null)
             torusMesh.sharedMesh.Clear();
 
diff --git a/Assets/Scripts/SoundManager.cs b/Assets/Scripts/SoundManager.cs
index 492de2034f12eec6f78a7ad022febb087dda0d5e..f1af5e0de7e5523b2f84a8bb2b248c75727b39b8 100644
--- a/Assets/Scripts/SoundManager.cs
+++ b/Assets/Scripts/SoundManager.cs
@@ -11,10 +11,12 @@ public class SoundManager : MonoBehaviour
     // Start is called before the first frame update
     void Start()
     {
-        if(!PlayerPrefs.HasKey("soundVolume")) {
+        if (!PlayerPrefs.HasKey("soundVolume"))
+        {
             PlayerPrefs.SetFloat("soundVolume", defaultVolume);
             Load();
-        } else
+        }
+        else
         {
             Load();
         }
@@ -23,16 +25,24 @@ void Start()
     public void Awake()
     {
         //singleton
-        if(Instance == null)
+        if (Instance == null)
         {
             Instance = this;
-            DontDestroyOnLoad(gameObject);
-        } else
+            if (gameObject.IsRoot())
+                DontDestroyOnLoad(gameObject);
+        }
+        else
         {
             Destroy(gameObject);
         }
     }
 
+    private void OnDestroy()
+    {
+        if (!gameObject.IsRoot())
+            Instance = null;
+    }
+
     public void ChangeVolume()
     {
         AudioListener.volume = volumeSlider.value;
@@ -43,10 +53,9 @@ private void Load()
     {
         volumeSlider.value = PlayerPrefs.GetFloat("soundVolume");
     }
+
     private void Save()
     {
         PlayerPrefs.SetFloat("soundVolume", volumeSlider.value);
     }
-
-
 }
diff --git a/Assets/Scripts/Utility/Extensions/GameObjectExtensions.cs b/Assets/Scripts/Utility/Extensions/GameObjectExtensions.cs
index 003876b4550f6e6acea5e4e149e7760a1079355e..86b5c77a42ea6b4e81acde50fb951d7c3f3a3d9a 100644
--- a/Assets/Scripts/Utility/Extensions/GameObjectExtensions.cs
+++ b/Assets/Scripts/Utility/Extensions/GameObjectExtensions.cs
@@ -5,6 +5,9 @@
 
 public static class GameObjectExtensions
 {
+    public static bool IsRoot(this GameObject root)
+        => root.transform.parent == null;
+
     public static void SetActiveByTagRecursive(this GameObject root, string tag, bool enable)
         => root.ForAllChildren(child => {
             if (child.CompareTag(tag))
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
index 2f91af0d16765917cc71d74a246203aae4c540e1..70253e43e61bbe6e9f9976677fcae67f4b262a82 100644
--- a/UserSettings/EditorUserSettings.asset
+++ b/UserSettings/EditorUserSettings.asset
@@ -12,10 +12,10 @@ EditorUserSettings:
       value: 5b01035553515d0e0b0f5b7415725d444e4f1d2b2e782332757f4863e4e6673c
       flags: 0
     RecentlyUsedSceneGuid-2:
-      value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a
+      value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c
       flags: 0
     RecentlyUsedSceneGuid-3:
-      value: 0502505152005e020c0d0e2446275e44144f19287f707e362c7c4b60b2b9353c
+      value: 5b5200520604510a5b5b587642270744124e4e7a7e7f2764742f1b61b0e6613a
       flags: 0
     RecentlyUsedSceneGuid-4:
       value: 0709560454055c0d0c5e5c2444740b4413154a72792d22627c714963e0b6373d