diff --git a/Assets/Animations/LineFact/MakeNormal.anim b/Assets/Animations/LineFact/MakeNormal.anim
index f0567fa07e111bd0c56a26b780cc3b5f52f28186..c94472c1afd94c574531c92c6f9d321570d8bbb2 100644
--- a/Assets/Animations/LineFact/MakeNormal.anim
+++ b/Assets/Animations/LineFact/MakeNormal.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Animations/LineFact/MakeRed.anim b/Assets/Animations/LineFact/MakeRed.anim
index dc59851b87623e5c769b04b440620e21ab4245cb..9220a24447c5c7fb2bc17b05f2bd990561131b8b 100644
--- a/Assets/Animations/LineFact/MakeRed.anim
+++ b/Assets/Animations/LineFact/MakeRed.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Animations/LineFact/Pulsating.anim b/Assets/Animations/LineFact/Pulsating.anim
index 28b5c40f75018b42afc21ab43a94a82c00473b92..4175cda86653053f64840288a2afe627343dcb9a 100644
--- a/Assets/Animations/LineFact/Pulsating.anim
+++ b/Assets/Animations/LineFact/Pulsating.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Animations/RayFact/MakeNormal.anim b/Assets/Animations/RayFact/MakeNormal.anim
index d7dce6f91958e8fcc59714d5e93db365b061cb51..75bdd3c3739f92a06167c98c74a37de0c5853364 100644
--- a/Assets/Animations/RayFact/MakeNormal.anim
+++ b/Assets/Animations/RayFact/MakeNormal.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Animations/RayFact/MakeRed.anim b/Assets/Animations/RayFact/MakeRed.anim
index 0393cf76de527307091ab2f842d22e33c34e3c1d..cf69a0bd688fb87570e6ca9e7b0c542a080c1987 100644
--- a/Assets/Animations/RayFact/MakeRed.anim
+++ b/Assets/Animations/RayFact/MakeRed.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Animations/RayFact/Pulsating.anim b/Assets/Animations/RayFact/Pulsating.anim
index 8818eef0e1ba8a43c462e417d38c92c854899043..5f2ed98a13e0c75a39195da01755773a9147b86d 100644
--- a/Assets/Animations/RayFact/Pulsating.anim
+++ b/Assets/Animations/RayFact/Pulsating.anim
@@ -42,7 +42,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -70,7 +70,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -98,7 +98,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -126,7 +126,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_PPtrCurves: []
@@ -138,28 +138,28 @@ AnimationClip:
   m_ClipBindingConstant:
     genericBindings:
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1303350129
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1571785585
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 1840221041
       script: {fileID: 0}
       typeID: 23
       customType: 22
       isPPtrCurve: 0
     - serializedVersion: 2
-      path: 1898322888
+      path: 4167640492
       attribute: 2108656497
       script: {fileID: 0}
       typeID: 23
@@ -212,7 +212,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.r
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -240,7 +240,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.g
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -268,7 +268,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.b
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   - curve:
@@ -296,7 +296,7 @@ AnimationClip:
       m_PostInfinity: 2
       m_RotationOrder: 4
     attribute: material._Color.a
-    path: Line
+    path: LineInner
     classID: 23
     script: {fileID: 0}
   m_EulerEditorCurves: []
diff --git a/Assets/Resources/Prefabs/Line.prefab b/Assets/Resources/Prefabs/Line.prefab
index 7f922a0c2511093c6dc27284640ae6f3df16025d..b4e16ac02741bddae627f2f7a8f17a2bb659483e 100644
--- a/Assets/Resources/Prefabs/Line.prefab
+++ b/Assets/Resources/Prefabs/Line.prefab
@@ -251,6 +251,85 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   Cam: {fileID: 0}
+--- !u!1 &6247621022589904505
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4678806186037624479}
+  - component: {fileID: 2701943617241909663}
+  - component: {fileID: 4008433908760336842}
+  m_Layer: 11
+  m_Name: LineHighlight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4678806186037624479
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6247621022589904505}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.96, y: 0.51, z: 0.51}
+  m_Children: []
+  m_Father: {fileID: 3517099398133763913}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2701943617241909663
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6247621022589904505}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4008433908760336842
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6247621022589904505}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
 --- !u!1 &6378548342073962023
 GameObject:
   m_ObjectHideFlags: 0
@@ -284,6 +363,7 @@ Transform:
   m_LocalScale: {x: 1, y: 0.02, z: 0.02}
   m_Children:
   - {fileID: 2374130608748553515}
+  - {fileID: 4678806186037624479}
   m_Father: {fileID: 5818562496562931847}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -391,7 +471,7 @@ GameObject:
   - component: {fileID: 8620665629189134186}
   - component: {fileID: 2279887988868225897}
   m_Layer: 11
-  m_Name: Line
+  m_Name: LineInner
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Resources/Prefabs/Ray.prefab b/Assets/Resources/Prefabs/Ray.prefab
index 62f2a200f30799d7f8b471d4418a0ada5db519dd..ccc8431a4e9efdc138e3d4b6e291df261d8b1bed 100644
--- a/Assets/Resources/Prefabs/Ray.prefab
+++ b/Assets/Resources/Prefabs/Ray.prefab
@@ -32,6 +32,85 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3751826764213783083
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2155667380501583430}
+  - component: {fileID: 669189071706237370}
+  - component: {fileID: 323004521892560777}
+  m_Layer: 13
+  m_Name: LineHighlight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2155667380501583430
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3751826764213783083}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.96, y: 0.56, z: 0.56}
+  m_Children: []
+  m_Father: {fileID: 3517099398133763913}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &669189071706237370
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3751826764213783083}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &323004521892560777
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3751826764213783083}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 8ae9adf4dc782964387385c1e8c0eb72, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
 --- !u!1 &4853696702160906218
 GameObject:
   m_ObjectHideFlags: 0
@@ -284,6 +363,7 @@ Transform:
   m_LocalScale: {x: 1, y: 0.02, z: 0.02}
   m_Children:
   - {fileID: 2374130608748553515}
+  - {fileID: 2155667380501583430}
   m_Father: {fileID: 5818562496562931847}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -391,7 +471,7 @@ GameObject:
   - component: {fileID: 8620665629189134186}
   - component: {fileID: 2279887988868225897}
   m_Layer: 13
-  m_Name: Line
+  m_Name: LineInner
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Resources/Prefabs/Sphere.prefab b/Assets/Resources/Prefabs/Sphere.prefab
index a38211a7509349a05287bfb3b849959064e995a4..5062dad4c8517232e03b0adb95c89e2b3d4c0641 100644
--- a/Assets/Resources/Prefabs/Sphere.prefab
+++ b/Assets/Resources/Prefabs/Sphere.prefab
@@ -361,7 +361,6 @@ GameObject:
   - component: {fileID: 1665942822042087142}
   - component: {fileID: 8049191569390305507}
   - component: {fileID: 2096485946797826695}
-  - component: {fileID: 3155620005283274030}
   m_Layer: 10
   m_Name: SphereAnimate
   m_TagString: Untagged
@@ -430,19 +429,6 @@ MeshRenderer:
   m_SortingLayerID: 0
   m_SortingLayer: 0
   m_SortingOrder: 0
---- !u!135 &3155620005283274030
-SphereCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1080099159142297029}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 0
-  m_Enabled: 1
-  serializedVersion: 2
-  m_Radius: 0.5
-  m_Center: {x: 0, y: 0, z: 0}
 --- !u!1 &7522635739010457072
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/InteractionEngine/Fact.cs b/Assets/Scripts/InteractionEngine/Fact.cs
index d99dc3bcdc4d8a8ce781e3f7eb08da51125f1ea4..c576b07c83143d3bd4218bb084aece3aa070e178 100644
--- a/Assets/Scripts/InteractionEngine/Fact.cs
+++ b/Assets/Scripts/InteractionEngine/Fact.cs
@@ -279,33 +279,31 @@ public AngleFact(int i, int pid1, int pid2, int pid3)
         PointFact pf2 = CommunicationEvents.Facts.Find((x => x.Id == pid2)) as PointFact;
         PointFact pf3 = CommunicationEvents.Facts.Find((x => x.Id == pid3)) as PointFact;
 
-        //Label is currently set to Fact.setId
-        //Set Label to StringConcatenation of Points
-        this.Label = "∠" + pf1.Label + pf2.Label + pf3.Label;
-
         string p1URI = pf1.backendURI;
         string p2URI = pf2.backendURI;
         string p3URI = pf3.backendURI;
         float v = Vector3.Angle((pf1.Point - pf2.Point), (pf3.Point - pf2.Point));
-        if (Mathf.Abs(v - 90.0f) < 0.01) v = 90.0f;
 
-        Debug.Log("angle: " + v);
+        MMTDeclaration mmtDecl;
 
-        MMTTerm lhs =
-            new OMA(
-                new OMS(MMTURIs.Angle),
-                new List<MMTTerm> {
-                    new OMS(p1URI),
-                    new OMS(p2URI),
-                    new OMS(p3URI)
-                }
-            );
+        if (Mathf.Abs(v - 90.0f) < 0.01)
+        {
+            v = 90.0f;
+            //Label is currently set to Fact.setId
+            //Set Label to StringConcatenation of Points
+            this.Label = "∟" + pf1.Label + pf2.Label + pf3.Label;
+            mmtDecl = generate90DegreeAngleDeclaration(v, p1URI, p2URI, p3URI);
+        }
+        else
+        {
+            //Label is currently set to Fact.setId
+            //Set Label to StringConcatenation of Points
+            this.Label = "∠" + pf1.Label + pf2.Label + pf3.Label;
+            mmtDecl = generateNot90DegreeAngleDeclaration(v, p1URI, p2URI, p3URI);
+        }
 
-        MMTTerm valueTp = new OMS(MMTURIs.RealLit);
-        MMTTerm value = new OMF(v);
+        Debug.Log("angle: " + v);
 
-        //see point label
-        MMTValueDeclaration mmtDecl = new MMTValueDeclaration(this.Label, lhs, valueTp, value);
         string body = MMTDeclaration.ToJson(mmtDecl);
 
         Debug.Log(body);
@@ -333,6 +331,48 @@ public static AngleFact parseFact(Scroll.ScrollFact fact)
         int pid3 = CommunicationEvents.Facts.Find(x => x.backendURI.Equals(pointCUri)).Id;
         return new AngleFact(pid1, pid2, pid3, uri);
     }
+
+    private MMTDeclaration generate90DegreeAngleDeclaration(float val, string p1URI, string p2URI, string p3URI) {
+
+        MMTTerm argument = new OMA(
+            new OMS(MMTURIs.Eq),
+            new List<MMTTerm> {
+                new OMS(MMTURIs.RealLit),
+                new OMA(
+                    new OMS(MMTURIs.Angle),
+                    new List<MMTTerm> {
+                        new OMS(p1URI),
+                        new OMS(p2URI),
+                        new OMS(p3URI)
+                    }
+                ),
+                new OMF(val)
+            }
+        );
+        
+        MMTTerm tp = new OMA(new OMS(MMTURIs.Ded), new List<MMTTerm> {argument});
+        MMTTerm df = null;
+
+        return new MMTSymbolDeclaration(this.Label, tp, df);
+    }
+
+    private MMTDeclaration generateNot90DegreeAngleDeclaration(float val, string p1URI, string p2URI, string p3URI)
+    {
+        MMTTerm lhs =
+            new OMA(
+                new OMS(MMTURIs.Angle),
+                new List<MMTTerm> {
+                    new OMS(p1URI),
+                    new OMS(p2URI),
+                    new OMS(p3URI)
+                }
+            );
+
+        MMTTerm valueTp = new OMS(MMTURIs.RealLit);
+        MMTTerm value = new OMF(val);
+        
+        return new MMTValueDeclaration(this.Label, lhs, valueTp, value);
+    }
 }
 
 
diff --git a/Assets/Scripts/InteractionEngine/ShinyThings.cs b/Assets/Scripts/InteractionEngine/ShinyThings.cs
index 8826dbacfd8c22c763815a108d618bebb038fcf9..e9eeaf64a7d41e959e9e5fc41e134db6e2cac38b 100644
--- a/Assets/Scripts/InteractionEngine/ShinyThings.cs
+++ b/Assets/Scripts/InteractionEngine/ShinyThings.cs
@@ -197,15 +197,15 @@ public void StartPushoutFactHighlighting(Fact startFact) {
         else if (typeof(LineFact).IsInstanceOfType(highlightedPushoutFact))
         {
             LineFact fact = (LineFact)highlightedPushoutFact;
-            tempMaterial = fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material;
-            fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material = pushoutMaterial;
+            tempMaterial = fact.Representation.transform.GetChild(0).GetChild(1).GetComponent<MeshRenderer>().material;
+            fact.Representation.transform.GetChild(0).GetChild(1).GetComponent<MeshRenderer>().material = pushoutMaterial;
             this.extraHighlight = GameObject.Instantiate(fireworksRepresentation);
             this.extraHighlight.transform.position = fact.Representation.transform.position;
         }
         else if (typeof(AngleFact).IsInstanceOfType(highlightedPushoutFact)) {
             AngleFact fact = (AngleFact)highlightedPushoutFact;
-            tempMaterial = fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material;
-            fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material = pushoutMaterial;
+            tempMaterial = fact.Representation.transform.GetChild(0).GetComponent<MeshRenderer>().material;
+            fact.Representation.transform.GetChild(0).GetComponent<MeshRenderer>().material = pushoutMaterial;
             this.extraHighlight = GameObject.Instantiate(fireworksRepresentation);
             this.extraHighlight.transform.position = fact.Representation.transform.position;
         }
@@ -226,12 +226,12 @@ public void StopPushoutFactHighlighting() {
         else if (typeof(LineFact).IsInstanceOfType(highlightedPushoutFact))
         {
             LineFact fact = (LineFact)highlightedPushoutFact;
-            fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material = tempMaterial;
+            fact.Representation.transform.GetChild(0).GetChild(1).GetComponent<MeshRenderer>().material = tempMaterial;
         }
         else if (typeof(AngleFact).IsInstanceOfType(highlightedPushoutFact))
         {
             AngleFact fact = (AngleFact)highlightedPushoutFact;
-            fact.Representation.transform.GetChild(0).GetChild(0).GetComponent<MeshRenderer>().material = tempMaterial;
+            fact.Representation.transform.GetChild(0).GetComponent<MeshRenderer>().material = tempMaterial;
         }
 
         GameObject.Destroy(this.extraHighlight);