diff --git a/demos/optical_bench/src/controller_overlay.cpp b/demos/optical_bench/src/controller_overlay.cpp
index df45dfe4bad080e6a097993346a359fe4436a094..f6bb6a7734478968563bacd87a0340ff72f7c2d3 100644
--- a/demos/optical_bench/src/controller_overlay.cpp
+++ b/demos/optical_bench/src/controller_overlay.cpp
@@ -64,7 +64,11 @@ ControllerOverlay::ControllerOverlay(phx::Entity* controller,
                              ->GetMaterial()
                              ->GetAmbientImage());
   grip_images_.push_back(phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
-      "models/opticalBench/controller_overlay/menu_images/Grip_Select.png"));
+      "models/opticalBench/controller_overlay/menu_images/"
+      "Grip_Select_Left.png"));
+  grip_images_.push_back(phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+      "models/opticalBench/controller_overlay/menu_images/"
+      "Grip_Select_Right.png"));
   grip_images_.push_back(phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
       "models/opticalBench/controller_overlay/menu_images/Grip1.png"));
   grip_images_.push_back(phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
@@ -83,6 +87,10 @@ ControllerOverlay::ControllerOverlay(phx::Entity* controller,
       phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
           "models/opticalBench/controller_overlay/menu_images/"
           "Trigger_Grabbed.png"));
+  trigger_images_.push_back(
+      phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+          "models/opticalBench/controller_overlay/menu_images/"
+          "Trigger_Deselect.png"));
 
   trackpad_images_.push_back(
       grip_trackpad_->GetFirstComponent<phx::MaterialHandle>()
@@ -100,16 +108,16 @@ void ControllerOverlay::SetGripMode(GripMode m) {
   if (m == current_grip_mode_) return;
   switch (m) {
     case EMPTY:
-      setEntityImage(grip_left_, grip_images_[3]);
-      setEntityImage(grip_right_, grip_images_[3]);
-      break;
-    case ROTATION:
       setEntityImage(grip_left_, grip_images_[4]);
       setEntityImage(grip_right_, grip_images_[4]);
       break;
+    case ROTATION:
+      setEntityImage(grip_left_, grip_images_[5]);
+      setEntityImage(grip_right_, grip_images_[5]);
+      break;
     case TRANSLATION:
-      setEntityImage(grip_left_, grip_images_[2]);
-      setEntityImage(grip_right_, grip_images_[2]);
+      setEntityImage(grip_left_, grip_images_[3]);
+      setEntityImage(grip_right_, grip_images_[3]);
       break;
     case RESET:
       setEntityImage(grip_left_, grip_images_[0]);
@@ -117,7 +125,7 @@ void ControllerOverlay::SetGripMode(GripMode m) {
       break;
     case SELECT:
       setEntityImage(grip_left_, grip_images_[1]);
-      setEntityImage(grip_right_, grip_images_[1]);
+      setEntityImage(grip_right_, grip_images_[2]);
       break;
   };
   current_grip_mode_ = m;
@@ -154,6 +162,9 @@ void ControllerOverlay::SetTriggerMode(TriggerMode m) {
     case GRABBED:
       setEntityImage(grip_trigger_, trigger_images_[2]);
       break;
+    case DESELECT:
+      setEntityImage(grip_trigger_, trigger_images_[3]);
+      break;
   };
   current_trigger_mode_ = m;
 }
diff --git a/demos/optical_bench/src/controller_overlay.hpp b/demos/optical_bench/src/controller_overlay.hpp
index 98dfc26b6d3f69788ff557263fc518cb12e20723..cf761fa846cde9a96e58d9024777a05469580711 100644
--- a/demos/optical_bench/src/controller_overlay.hpp
+++ b/demos/optical_bench/src/controller_overlay.hpp
@@ -43,7 +43,7 @@ class ControllerOverlay : public Component {
     RESET = 3,
     SELECT = 4
   };
-  enum TriggerMode { NORMAL = 0, GRAB = 1, GRABBED = 2 };
+  enum TriggerMode { NORMAL = 0, GRAB = 1, GRABBED = 2, DESELECT = 3 };
   explicit ControllerOverlay(phx::Entity* entity, phx::Scene* scene);
   virtual ~ControllerOverlay() = default;
 
diff --git a/demos/optical_bench/src/hmd_navigation_behavior.cpp b/demos/optical_bench/src/hmd_navigation_behavior.cpp
index 7f685a8d4522fdb9e3cbb8b0b0c90e60bb257372..63347dd384990be3af2c691b8693d05811ea1068 100644
--- a/demos/optical_bench/src/hmd_navigation_behavior.cpp
+++ b/demos/optical_bench/src/hmd_navigation_behavior.cpp
@@ -191,6 +191,8 @@ void HMDNavigationBehavior::OnUpdate() {
                manipulationHelperAttachable(last_selected_)) {
       controller_overlay_->SetGripMode(
           static_cast<phx::ControllerOverlay::GripMode>(grip_mode % 3));
+    } else {
+      controller_overlay_->SetGripMode(phx::ControllerOverlay::RESET);
     }
   } else {
     controller_overlay_->SetGripMode(phx::ControllerOverlay::RESET);
@@ -204,6 +206,9 @@ void HMDNavigationBehavior::OnUpdate() {
              select_->GetHovered()->GetFirstComponent<phx::Selector>() !=
                  nullptr) {
     controller_overlay_->SetTriggerMode(phx::ControllerOverlay::GRAB);
+  } else if (!trigger_pressed && last_selected_ != nullptr &&
+             manipulationHelperAttachable(last_selected_)) {
+    controller_overlay_->SetTriggerMode(phx::ControllerOverlay::DESELECT);
   } else {
     controller_overlay_->SetTriggerMode(phx::ControllerOverlay::NORMAL);
   }
diff --git a/demos/optical_bench/src/laser_menu.cpp b/demos/optical_bench/src/laser_menu.cpp
index 33a8f26eab51ac30ceb73c5b2c72f4fd3029d655..286ca008aceda0f0e04ac65ba212ded9d6261c0b 100644
--- a/demos/optical_bench/src/laser_menu.cpp
+++ b/demos/optical_bench/src/laser_menu.cpp
@@ -103,10 +103,14 @@ LaserMenu::LaserMenu(phx::Scene* scene, phx::Engine* engine) {
       entity_->GetFirstComponent<phx::Transform>(), false);
   clear_target_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
   clear_target_->GetTransform()->SetLocalScale(glm::vec3(0.06f, 0.01f, 0.017f));
-  clear_target_->GetTransform()->SetLocalTranslation(glm::vec3(0.0f,-0.075f,0.0f));
+  clear_target_->GetTransform()->SetLocalTranslation(
+      glm::vec3(0.0f, -0.08f, 0.0f));
+  clear_target_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+      "models/opticalBench/menu/Clear.png"));
   clear_target_->SetHoldable(false);
-  clear_target_->SetOnPress(
-      [this, rayPass](phx::Transform*, glm::mat4) { rayPass->clearTargetBuffers(); });
+  clear_target_->SetOnPress([this, rayPass](phx::Transform*, glm::mat4) {
+    rayPass->clearTargetBuffers();
+  });
 }
 
 LaserMenu::~LaserMenu() {
diff --git a/demos/optical_bench/src/lens_menu.cpp b/demos/optical_bench/src/lens_menu.cpp
index 90464aa79f54e7fac4556e6e50ee38c6e7f36199..4bb0e87825e643b5af21a1493b616e1d5bc3ae0c 100644
--- a/demos/optical_bench/src/lens_menu.cpp
+++ b/demos/optical_bench/src/lens_menu.cpp
@@ -58,8 +58,8 @@ LensMenu::LensMenu(phx::Scene* scene, phx::Engine* engine, Lens* lens) {
         slider_thickness_->SetMinMax(current_lens_->getThickness(0),
                                      min_max[1]);
 
-        static char te[] = "000cm";
-        snprintf(te, sizeof(te), "%3.0fcm", val * 100);
+        static char te[] = "100.1cm";
+        snprintf(te, sizeof(te), "%5.1fcm", val * 100);
         text_radius1_->SetText(std::string(te));
       });
 
@@ -74,8 +74,8 @@ LensMenu::LensMenu(phx::Scene* scene, phx::Engine* engine, Lens* lens) {
         slider_thickness_->SetMinMax(current_lens_->getThickness(0),
                                      min_max[1]);
 
-        static char te[] = "000cm";
-        snprintf(te, sizeof(te), "%3.0fcm", val * 100);
+        static char te[] = "100.1cm";
+        snprintf(te, sizeof(te), "%5.1fcm", val * 100);
         text_radius2_->SetText(std::string(te));
       });
 
@@ -171,12 +171,12 @@ void LensMenu::SetCurrentLens(Lens* lens) {
   slider_thickness_->SetValue(v);
 
   v = current_lens_->GetRadius();
-  snprintf(te, sizeof(te), "%3.0fcm", v * 100);
+  snprintf(te, sizeof(te), "%5.1fcm", v * 100);
   text_radius1_->SetText(std::string(te));
   slider_radius1_->SetValue(v);
 
   v = current_lens_->GetRadius2();
-  snprintf(te, sizeof(te), "%3.0fcm", v * 100);
+  snprintf(te, sizeof(te), "%5.1fcm", v * 100);
   text_radius2_->SetText(std::string(te));
   slider_radius2_->SetValue(v);
 
diff --git a/demos/optical_bench/src/menu_button.cpp b/demos/optical_bench/src/menu_button.cpp
index dc44d1a6afc1bfd86124ca98a998bd6889834d15..0676491752048a043b28631225e5d8f3cb935801 100644
--- a/demos/optical_bench/src/menu_button.cpp
+++ b/demos/optical_bench/src/menu_button.cpp
@@ -28,6 +28,10 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) {
       entity_ = phx::SceneLoader::InsertModelIntoScene(
           "models/opticalBench/menu/Button_Round.obj", scene);
       break;
+    case TYPE::LENS:
+      entity_ = phx::SceneLoader::InsertModelIntoScene(
+          "models/opticalBench/menu/Button_Lens.obj", scene);
+      break;
   }
 
   phx::MaterialHandle* outer = nullptr;
@@ -38,9 +42,10 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) {
                       ->GetFirstComponent<phx::MaterialHandle>();
     if (handle->GetMaterial()->GetName().compare("ButtonBase") == 0) {
       outer = handle;
-    }
-    if (handle->GetMaterial()->GetName().compare("Image") == 0) {
-		face_ = handle;
+    } else if (handle->GetMaterial()->GetName().compare("Image") == 0) {
+      face_ = handle;
+    } else if (handle->GetMaterial()->GetName().compare("Face") == 0) {
+      face_ = handle;
     }
   }
 
@@ -52,8 +57,13 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) {
       outer->GetMaterial(),
       std::string("Button_Material_") + std::to_string(id)));
   face_->SetMaterial(MenuHelper::cloneMaterial(
-	  face_->GetMaterial(),
-	  std::string("Button_Face_Material_") + std::to_string(id)));
+      face_->GetMaterial(),
+      std::string("Button_Face_Material_") + std::to_string(id)));
+
+  if (type == TYPE::LENS) {
+    face_->GetMaterial()->SetAmbientColor(glm::vec3(0.322f, 0.729f, 0.722f));
+    face_->GetMaterial()->SetDiffuseColor(glm::vec3(0.322f, 0.729f, 0.722f));
+  }
 
   outer->GetMaterial()->SetAmbientColor(color_unhovered);
   outer->GetMaterial()->SetDiffuseColor(color_unhovered);
@@ -125,5 +135,5 @@ MenuButton::MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type) {
 MenuButton::~MenuButton() {}
 
 void MenuButton::SetImage(phx::ResourcePointer<phx::Image> image) {
-	face_->GetMaterial()->SetAmbientImage(image);
+  face_->GetMaterial()->SetAmbientImage(image);
 }
diff --git a/demos/optical_bench/src/menu_button.hpp b/demos/optical_bench/src/menu_button.hpp
index d0e7bbde016102319048a270582c99b091fe91a3..ffc0a7692e412820a7995a723b2fa4a1c4c19bc6 100644
--- a/demos/optical_bench/src/menu_button.hpp
+++ b/demos/optical_bench/src/menu_button.hpp
@@ -10,13 +10,13 @@ SUPPRESS_WARNINGS_END
 
 #include "phx/core/entity.hpp"
 #include "phx/core/scene.hpp"
+#include "phx/rendering/components/material_handle.hpp"
 #include "phx/rendering/components/transform.hpp"
 #include "phx/resources/types/image.hpp"
-#include "phx/rendering/components/material_handle.hpp"
 
 class MenuButton {
  public:
-  enum TYPE { RECTANGULAR, ROUND };
+  enum TYPE { RECTANGULAR, ROUND, LENS };
   MenuButton(phx::Engine* engine, phx::Scene* scene, TYPE type);
   ~MenuButton();
 
@@ -41,7 +41,7 @@ class MenuButton {
   phx::Entity* entity_;
   phx::Selector* selector_;
   bool grabbed_ = false;
-  glm::vec3 color_unhovered = glm::vec3(0.8f);
+  glm::vec3 color_unhovered = glm::vec3(0.5f);
   glm::vec3 color_hovered = glm::vec3(1.0f, 0.502f, 0.0f);
   glm::vec3 color_pressed = glm::vec3(1.0f, 0.0f, 0.0f);
   std::chrono::duration<double> grab_time_;
diff --git a/demos/optical_bench/src/menu_slider.hpp b/demos/optical_bench/src/menu_slider.hpp
index 30cc3891be524285de885a40525a44418f5b0867..8f6b4da42441041acb37cc0943696514e85e371e 100644
--- a/demos/optical_bench/src/menu_slider.hpp
+++ b/demos/optical_bench/src/menu_slider.hpp
@@ -51,7 +51,7 @@ class MenuSlider {
   std::function<void(float)> value_changed_ = nullptr;
 
   // highlight stuff
-  glm::vec3 color_normal = glm::vec3(0.8f);
+  glm::vec3 color_normal = glm::vec3(0.5f);
   glm::vec3 color_hovered = glm::vec3(1.0f, 0.502f, 0.0f);
   glm::vec3 color_pressed = glm::vec3(1.0f, 0.0f, 0.0f);
   glm::vec3 color_selected = glm::vec3(0.424f, 0.851f, 0.141f);
diff --git a/demos/optical_bench/src/menu_switch.hpp b/demos/optical_bench/src/menu_switch.hpp
index 2c17103c84e7afc07287de3ce79e93552e500b61..ae972a9b10f9be99b1f0abe93be50d30abcb1aac 100644
--- a/demos/optical_bench/src/menu_switch.hpp
+++ b/demos/optical_bench/src/menu_switch.hpp
@@ -33,7 +33,7 @@ class MenuSwitch {
  private:
   phx::Entity* entity_;
   phx::Selector* selector_;
-  glm::vec3 color_unhovered = glm::vec3(0.8f);
+  glm::vec3 color_unhovered = glm::vec3(0.5f);
   glm::vec3 color_hovered = glm::vec3(1.0f, 0.502f, 0.0f);
 
   bool activated_ = false;
diff --git a/demos/optical_bench/src/object_menu.cpp b/demos/optical_bench/src/object_menu.cpp
index 716cd0e566769fe8b665a7d4abb0b5e163c0cf47..dd3d8dfddbb58300eadd81b30223641515da0e66 100644
--- a/demos/optical_bench/src/object_menu.cpp
+++ b/demos/optical_bench/src/object_menu.cpp
@@ -42,14 +42,17 @@ ObjectMenu::ObjectMenu(phx::Scene* scene, phx::Engine* engine) {
 
   auto object_manager = engine->GetSystem<ObjectManager>();
 
-  //Frame Buttons
+  // Frame Buttons
   create_frame_1_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR);
   create_frame_1_->GetTransform()->SetParent(
       entity_->GetFirstComponent<phx::Transform>(), false);
   create_frame_1_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
-  create_frame_1_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f));
+  create_frame_1_->GetTransform()->SetLocalScale(
+      glm::vec3(0.05f, 0.01f, 0.05f));
   create_frame_1_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, -0.1f));
-  create_frame_1_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/Checker.png"));
+  create_frame_1_->SetImage(
+      phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+          "laser/target/Checker.png"));
   create_frame_1_->SetHoldable(false);
   create_frame_1_->SetOnPress(
       [this, object_manager](phx::Transform* t, glm::mat4) {
@@ -58,50 +61,62 @@ ObjectMenu::ObjectMenu(phx::Scene* scene, phx::Engine* engine) {
 
   create_frame_2_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR);
   create_frame_2_->GetTransform()->SetParent(
-	  entity_->GetFirstComponent<phx::Transform>(), false);
+      entity_->GetFirstComponent<phx::Transform>(), false);
   create_frame_2_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
-  create_frame_2_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f));
-  create_frame_2_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.055f, -0.1f));
-  create_frame_2_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerRed.png"));
+  create_frame_2_->GetTransform()->SetLocalScale(
+      glm::vec3(0.05f, 0.01f, 0.05f));
+  create_frame_2_->GetTransform()->SetLocalTranslation(
+      glm::vec3(0, -0.055f, -0.1f));
+  create_frame_2_->SetImage(
+      phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+          "laser/target/CheckerRed.png"));
   create_frame_2_->SetHoldable(false);
-  create_frame_2_->SetOnPress(
-	  [this, object_manager](phx::Transform* t, glm::mat4) {
-	  object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerRed.png");
+  create_frame_2_->SetOnPress([this, object_manager](phx::Transform* t,
+                                                     glm::mat4) {
+    object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerRed.png");
   });
 
   create_frame_3_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR);
   create_frame_3_->GetTransform()->SetParent(
-	  entity_->GetFirstComponent<phx::Transform>(), false);
+      entity_->GetFirstComponent<phx::Transform>(), false);
   create_frame_3_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
-  create_frame_3_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f));
-  create_frame_3_->GetTransform()->SetLocalTranslation(glm::vec3(0, 0, -0.045f));
-  create_frame_3_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerBlue.png"));
+  create_frame_3_->GetTransform()->SetLocalScale(
+      glm::vec3(0.05f, 0.01f, 0.05f));
+  create_frame_3_->GetTransform()->SetLocalTranslation(
+      glm::vec3(0, 0, -0.045f));
+  create_frame_3_->SetImage(
+      phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+          "laser/target/CheckerBlue.png"));
   create_frame_3_->SetHoldable(false);
-  create_frame_3_->SetOnPress(
-	  [this, object_manager](phx::Transform* t, glm::mat4) {
-	  object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerBlue.png");
+  create_frame_3_->SetOnPress([this, object_manager](phx::Transform* t,
+                                                     glm::mat4) {
+    object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerBlue.png");
   });
 
   create_frame_4_ = new MenuButton(engine, scene, MenuButton::RECTANGULAR);
   create_frame_4_->GetTransform()->SetParent(
-	  entity_->GetFirstComponent<phx::Transform>(), false);
+      entity_->GetFirstComponent<phx::Transform>(), false);
   create_frame_4_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
-  create_frame_4_->GetTransform()->SetLocalScale(glm::vec3(0.05f, 0.01f, 0.05f));
-  create_frame_4_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.055f, -0.045f));
-  create_frame_4_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("laser/target/CheckerGreen.png"));
+  create_frame_4_->GetTransform()->SetLocalScale(
+      glm::vec3(0.05f, 0.01f, 0.05f));
+  create_frame_4_->GetTransform()->SetLocalTranslation(
+      glm::vec3(0, -0.055f, -0.045f));
+  create_frame_4_->SetImage(
+      phx::ResourceUtils::LoadResourceFromFile<phx::Image>(
+          "laser/target/CheckerGreen.png"));
   create_frame_4_->SetHoldable(false);
-  create_frame_4_->SetOnPress(
-	  [this, object_manager](phx::Transform* t, glm::mat4) {
-	  object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerGreen.png");
+  create_frame_4_->SetOnPress([this, object_manager](phx::Transform* t,
+                                                     glm::mat4) {
+    object_manager->CreateTarget(t->GetGlobalTranslation(), "CheckerGreen.png");
   });
 
-  create_lens_ = new MenuButton(engine, scene, MenuButton::ROUND);
+  create_lens_ = new MenuButton(engine, scene, MenuButton::LENS);
   create_lens_->GetTransform()->SetParent(
       entity_->GetFirstComponent<phx::Transform>(), false);
   create_lens_->GetTransform()->SetLocalRotationEuler(glm::vec3(0, -90, 90));
-  create_lens_->GetTransform()->SetLocalScale(glm::vec3(0.043f, 0.01f, 0.102f));
-  create_lens_->GetTransform()->SetLocalTranslation(glm::vec3(0, -0.025f, 0.075f));
-  create_lens_->SetImage(phx::ResourceUtils::LoadResourceFromFile<phx::Image>("models/opticalBench/menu/lens.png"));
+  create_lens_->GetTransform()->SetLocalScale(glm::vec3(0.1f, 0.01f, 0.1f));
+  create_lens_->GetTransform()->SetLocalTranslation(
+      glm::vec3(0, -0.025f, 0.075f));
   create_lens_->SetHoldable(false);
   create_lens_->SetOnPress(
       [this, object_manager](phx::Transform* t, glm::mat4) {
diff --git a/demos/optical_bench/src/test_pattern_frame.cpp b/demos/optical_bench/src/test_pattern_frame.cpp
index ef1baa7461a414af59b49e90da7b8b1dd4347814..179ac9adc2dd9bd3e86fc661dc1f47cb5930c2f0 100644
--- a/demos/optical_bench/src/test_pattern_frame.cpp
+++ b/demos/optical_bench/src/test_pattern_frame.cpp
@@ -4,7 +4,6 @@
 #include "phx/rendering/components/transform.hpp"
 #include "phx/resources/resource_utils.hpp"
 #include "phx/suppress_warnings.hpp"
-#include "selection_mark_handler.hpp"
 #include "selector.hpp"
 
 #include "optix_context_manager.hpp"
@@ -79,10 +78,6 @@ TestPatternFrame::TestPatternFrame(phx::Scene* scene,
       glm::vec3(size.x / 2.0f, size.y / 2.0f, size.z / 2.0f));
 
   support_rod_ = new SupportRod(scene, selector);
-
-  entity_->AddComponent<phx::SelectionMarkHandler>(
-      [this]() { support_rod_->SetMarked(true); },
-      [this]() { support_rod_->SetMarked(false); });
 }
 
 TestPatternFrame::~TestPatternFrame() {
diff --git a/resources/models/opticalBench/controller_overlay/Controller_Buttons.mtl b/resources/models/opticalBench/controller_overlay/Controller_Buttons.mtl
index 8d8051376a6822a62e84651551a5ecfa3fe44572..14b189a38168952db8a9bf41bb5606d823c86f13 100644
--- a/resources/models/opticalBench/controller_overlay/Controller_Buttons.mtl
+++ b/resources/models/opticalBench/controller_overlay/Controller_Buttons.mtl
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:c00107d0edbf4a1a27ac930c3bc3eea7619380592778dc5e1c2121803cb93452
+oid sha256:eaa5475663fe62d1a955ca5711fb7e60ba7443920d0608ffc9a83bf73d7ddfa9
 size 854
diff --git a/resources/models/opticalBench/controller_overlay/Controller_Buttons.obj b/resources/models/opticalBench/controller_overlay/Controller_Buttons.obj
index 423dc4a2b49c1ae22c2ecdc6e292df938669fb89..886aeed62f93a3108eca5c3fa3e729869c7e4b79 100644
--- a/resources/models/opticalBench/controller_overlay/Controller_Buttons.obj
+++ b/resources/models/opticalBench/controller_overlay/Controller_Buttons.obj
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:59090fb8e67446b6f68bd1de0e7b21a6639f2a6a035117ca27f82552b5bb80e5
-size 71915
+oid sha256:72d4896570fecb5f2cfbcfecb44f4e38e5aa3ef4005f098ca00841edc179d8d3
+size 71770
diff --git a/resources/models/opticalBench/controller_overlay/Grip.png b/resources/models/opticalBench/controller_overlay/Grip.png
index 3178c129b5ce98a7da8c01b1b26c43cc3b7a691e..ca25c0a23f43c37b74adc5892a4a2b66dffdec50 100644
--- a/resources/models/opticalBench/controller_overlay/Grip.png
+++ b/resources/models/opticalBench/controller_overlay/Grip.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:76aa8aebe6b6d096b0c4996d8090f9cc65bae64f93cc263d1b0572336a6c0a02
-size 2283
+oid sha256:df38b86cd596b2e061c5e41ba956c0fc238634773fd254d66dada6d07c72b41e
+size 190
diff --git a/resources/models/opticalBench/controller_overlay/Trackpad.png b/resources/models/opticalBench/controller_overlay/Trackpad.png
index 48c9f65ad6ace5c3bbfd4ca1b54c258c439eff0f..4b34d2aa679929587e875ed11f013e19c8487315 100644
--- a/resources/models/opticalBench/controller_overlay/Trackpad.png
+++ b/resources/models/opticalBench/controller_overlay/Trackpad.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:988abf00cc3a3a2a18776b75b6931b3986214cce28e03f7f1cb37bb10857c58a
-size 4547
+oid sha256:11958ccef6a4910d09d0f3536c08a0d13e66c7649a686be8afd3f88d6f787db1
+size 141
diff --git a/resources/models/opticalBench/controller_overlay/Trigger.png b/resources/models/opticalBench/controller_overlay/Trigger.png
index 509c1683ce7645992bf0c33acf30eb995d5a1432..4b34d2aa679929587e875ed11f013e19c8487315 100644
--- a/resources/models/opticalBench/controller_overlay/Trigger.png
+++ b/resources/models/opticalBench/controller_overlay/Trigger.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:3ec8f758984ba58427ef40c18422207242352ad34915d4df91fd3cc2b86ffa44
-size 2398
+oid sha256:11958ccef6a4910d09d0f3536c08a0d13e66c7649a686be8afd3f88d6f787db1
+size 141
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip1.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip1.png
index 10b92aaa6a8fff098825e580f992ee2bb4ebecd7..e1910d80984cf9a945f3606880a993348371792e 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Grip1.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Grip1.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:9c7e92357d408ec48fe26d3197fe918fec6b73688e878378193c93cbe51cce30
-size 2554
+oid sha256:80a5b92b036588035b18b1405d9a7ceb47dbdd01b6b55a95722080583ad4bdcc
+size 473
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip2.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip2.png
index db58e5bdb6997faeb67a72ed26f998e41da514dd..ee2a2b063e151148c57f5b6dd0f45910606c9a6a 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Grip2.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Grip2.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:82ccfb0231d5fc4d2e3d0c7d8d2c6665c16c8a09fdaf508438e917079c5ff016
-size 2642
+oid sha256:d6c2af31cf8f54fe951bcd4f61768cee0466e65b61a88fe60ed102962cec4333
+size 484
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip3.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip3.png
index b6620e671cc14f3a70a9520414450c551512c6fb..b18365e40430b0eef768f925a468de35344d1009 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Grip3.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Grip3.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:64f0adf5e543db0e1b7bd54a006da59b7465e15cbc9028974f70b73bdec134eb
-size 2291
+oid sha256:939259c9f7aa1480a6e994318e9bc14917b4be34097051c0350f9bdd5a30789f
+size 478
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select.png
deleted file mode 100644
index c24a637ab9c56a4d92c477a39cebdc4304614a46..0000000000000000000000000000000000000000
--- a/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:90e1a0be70598d991b383a8399cf419d4ef1f6c140d454063084c7587b306166
-size 2430
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Left.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Left.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c8b03e00a8fb07677cfd9b891ccd4642ccb46ac
--- /dev/null
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Left.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a735263921a7388049a885e427b3537002b19dda456a5c2b8b6f2954c157de4b
+size 357
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Right.png b/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Right.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c6284e0f8323297afe4bfacf9e705b51412adda
--- /dev/null
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Grip_Select_Right.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d631b37467b04ae6e29062a6b556b3fb75529fa5450bbf5444b0bbf5ec3053c
+size 387
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Trackpad_Rotate.png b/resources/models/opticalBench/controller_overlay/menu_images/Trackpad_Rotate.png
index 3a933c9def0a8efae7078766e3e2b534ae04745d..6773475c7edc7e4d987d8a4784e762547b8857dc 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Trackpad_Rotate.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Trackpad_Rotate.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:55227d1718bfa8b363443edeec576ff6540c9d552b985cec76e62e33b6ca6427
-size 38447
+oid sha256:5ba1892958508fa5dfa7e5cfd2acc900699bcbe22833097656d44a13a13f11bc
+size 45043
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Deselect.png b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Deselect.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cb2d7ce0effb9484a9bf90f6731abe177e09a84
--- /dev/null
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Deselect.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fbe3f7c695ce5cc787355ff41372822880118f1cb4d26b6feb03126fbb0299a
+size 401
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grab.png b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grab.png
index e7395bc7f559265d0c72e6906bdbf47a7e84f936..99149d253e92a24b338aad89a4c6254e6530af88 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grab.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grab.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:78b46ec7b6619b78af851376473b86fe0bef869a27c2741f22a66a2659c2bd0d
-size 3585
+oid sha256:731e151f7bfc9c31114aeba0eba30777b7387ae324378d23d463122458f4774f
+size 438
diff --git a/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grabbed.png b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grabbed.png
index f470b3ef054b1e4b28e2a7ebe1dda9dd89fcb076..3a6a047a8da7082e72bb92e885f76b2f6eb13edb 100644
--- a/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grabbed.png
+++ b/resources/models/opticalBench/controller_overlay/menu_images/Trigger_Grabbed.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:cd613282eb6d96e017ecf61115e5a074e71020c42ec80891917b96a1261d24be
-size 3649
+oid sha256:685e95e53554ff424b287e0f42014e9c1b9df6a62d223790d3d4a7e906ea0954
+size 449
diff --git a/resources/models/opticalBench/controller_overlay/untitled.blend b/resources/models/opticalBench/controller_overlay/untitled.blend
index 84bc3918ff9f0f97fac915b65cbc23b4cf35d1b4..8c6a05b08aed208d695f59d6b512d4386652d83d 100644
Binary files a/resources/models/opticalBench/controller_overlay/untitled.blend and b/resources/models/opticalBench/controller_overlay/untitled.blend differ
diff --git a/resources/models/opticalBench/controller_overlay/untitled.blend1 b/resources/models/opticalBench/controller_overlay/untitled.blend1
index 246bf64ec65e0e9368c27bb50f65e1f96e3b7ba4..db03e33f8bb8ed045166e7adc27ae4e5645077e1 100644
Binary files a/resources/models/opticalBench/controller_overlay/untitled.blend1 and b/resources/models/opticalBench/controller_overlay/untitled.blend1 differ
diff --git a/resources/models/opticalBench/menu/Arrow_up.png b/resources/models/opticalBench/menu/Arrow_up.png
index 667c5c0a00eea843d63e98612baa5d08dfb6f179..5df3a93d9879f6525a01d248724892c2aacff611 100644
--- a/resources/models/opticalBench/menu/Arrow_up.png
+++ b/resources/models/opticalBench/menu/Arrow_up.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f6a9a832ecd999fe93f8936acbe3acd9358ea8cc0f287334bbfb6fb2761e85d8
-size 5151
+oid sha256:a400d53da5db2ca6eb332346751eaa1e3f899ed625ffd747c42edbf7bbae29d8
+size 2522
diff --git a/resources/models/opticalBench/menu/Button_Lens.mtl b/resources/models/opticalBench/menu/Button_Lens.mtl
new file mode 100644
index 0000000000000000000000000000000000000000..68baca7ca08697a5a704c7e83eae2dc184fa4732
--- /dev/null
+++ b/resources/models/opticalBench/menu/Button_Lens.mtl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22c457a5440feddc6784d034975c0302a83fbe54a86e798ed5462f367f6a194d
+size 413
diff --git a/resources/models/opticalBench/menu/Button_Lens.obj b/resources/models/opticalBench/menu/Button_Lens.obj
new file mode 100644
index 0000000000000000000000000000000000000000..c2c85fe7527ddc2491a698f09408daae8714c394
--- /dev/null
+++ b/resources/models/opticalBench/menu/Button_Lens.obj
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f56643bfd1c330656f4d3413146c1ab7f41e97d9d7d9ba18ba16ce40b37aee1e
+size 15964
diff --git a/resources/models/opticalBench/menu/Button_Rectangle.mtl b/resources/models/opticalBench/menu/Button_Rectangle.mtl
index 31e5285151bf58d8917d447d319b88ce1e47df88..ca0edb2ffc027701abdef609412de5d7390134e8 100644
--- a/resources/models/opticalBench/menu/Button_Rectangle.mtl
+++ b/resources/models/opticalBench/menu/Button_Rectangle.mtl
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:91277ec4ca4a6c38d8c34e97aa391da3d27c31bbe247a4ead01828ea7515bc96
+oid sha256:cc93a227cbc82478eabdd800b24c5922790af2f2052e39001a9d97a8c8532b1a
 size 434
diff --git a/resources/models/opticalBench/menu/Button_Round.mtl b/resources/models/opticalBench/menu/Button_Round.mtl
index 31e5285151bf58d8917d447d319b88ce1e47df88..ca0edb2ffc027701abdef609412de5d7390134e8 100644
--- a/resources/models/opticalBench/menu/Button_Round.mtl
+++ b/resources/models/opticalBench/menu/Button_Round.mtl
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:91277ec4ca4a6c38d8c34e97aa391da3d27c31bbe247a4ead01828ea7515bc96
+oid sha256:cc93a227cbc82478eabdd800b24c5922790af2f2052e39001a9d97a8c8532b1a
 size 434
diff --git a/resources/models/opticalBench/menu/Clear.png b/resources/models/opticalBench/menu/Clear.png
new file mode 100644
index 0000000000000000000000000000000000000000..cff4c74689680cd4d5b882de3684f1345678a73c
--- /dev/null
+++ b/resources/models/opticalBench/menu/Clear.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2986f4a337799bb314f89fd5c38736cde2e72dd6227bdc725c3a8b0b402b88b
+size 1167
diff --git a/resources/models/opticalBench/menu/Screen_Laser.png b/resources/models/opticalBench/menu/Screen_Laser.png
index a6e5c7f8927d1fba01d703438ca1c1718826aee3..0a0b7469b4c4bb03de2b6f40b754a99bcf779a59 100644
--- a/resources/models/opticalBench/menu/Screen_Laser.png
+++ b/resources/models/opticalBench/menu/Screen_Laser.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:9b97e7bc5499d80836c3e7e5571c4a21e8f4085af1f660bd0915507bf04dafe7
-size 201701
+oid sha256:d7b354fbf359040667ac066f2222f72855ab36722aafea46d799f4fb6f4d284e
+size 46125
diff --git a/resources/models/opticalBench/menu/Screen_Lens.png b/resources/models/opticalBench/menu/Screen_Lens.png
index 043504dfcd15d67c2a9c84690b0e9f5025c37242..4919332486b5a400765ce76aa22d98b7327434a8 100644
--- a/resources/models/opticalBench/menu/Screen_Lens.png
+++ b/resources/models/opticalBench/menu/Screen_Lens.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:4c47b0b458f9ccca053d4165c9ecc2c4ce4fb7d5f97b75159b26a5fdeca0f946
-size 201464
+oid sha256:31d57ddb0243cb56ece90a59b5812735bdf00727fea8cb2f93ae8b5ee61cc19d
+size 110758
diff --git a/resources/models/opticalBench/menu/Screen_Object.png b/resources/models/opticalBench/menu/Screen_Object.png
index 08ae78606362e61790a37711c7346de54d72b7af..0f73fe60f9c3c1c7d77bfca73e36c5e26d46d94a 100644
--- a/resources/models/opticalBench/menu/Screen_Object.png
+++ b/resources/models/opticalBench/menu/Screen_Object.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:f8793e64ed8f8b1d5cd1a7c58b8c6ab1ddc3cb7ecd065334c66f9c0ccf94e88d
-size 202327
+oid sha256:6f8fbabdab7014f42e73a598d26f3029b0d9191e316eaedbf5ce10347f563425
+size 65585
diff --git a/resources/models/opticalBench/menu/Slider.mtl b/resources/models/opticalBench/menu/Slider.mtl
index 1560be4b9f8a391e5394a3f4f021e0e01cd53cdc..7ba58ec6e11b7e11516ed5fc2c4e3980940f8e64 100644
--- a/resources/models/opticalBench/menu/Slider.mtl
+++ b/resources/models/opticalBench/menu/Slider.mtl
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:1a5a36130d36fe16579c679b6ef13326743a166550210ddcd9ed8b972174f08a
+oid sha256:62e3566acc6f72ab13a518c96a5a20b3f9a156423859778395fe30109233d2ce
 size 230
diff --git a/resources/models/opticalBench/menu/Slider.obj b/resources/models/opticalBench/menu/Slider.obj
index 86c48506961b6dc6bd83271394d9163e34cbeba6..943fb366f081b92c2c32ed273d29853325c806a2 100644
--- a/resources/models/opticalBench/menu/Slider.obj
+++ b/resources/models/opticalBench/menu/Slider.obj
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:07a3fb06be2207e823481ccd95182d4481ca5d012bcf4c98f2abe90d5fb74739
-size 7324
+oid sha256:b5c494c6fb60e88922d985875da6960951111a192b09e519985053d3915bdbdd
+size 8560
diff --git a/resources/models/opticalBench/menu/lens.png b/resources/models/opticalBench/menu/lens.png
deleted file mode 100644
index 1e22b6980af058a5a84ec082ce80cefdbd3a53c3..0000000000000000000000000000000000000000
--- a/resources/models/opticalBench/menu/lens.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6bd940aa3072db7b694f131e0bd8ac8c96f99d8e120b215ac17d9adb07c9043a
-size 4151
diff --git a/resources/models/opticalBench/menu/menu.blend b/resources/models/opticalBench/menu/menu.blend
index 250967e5db22f75173d3a5ff35cd992d4d14c200..4429f7c44744641a32734077d66a49fe2fffab30 100644
Binary files a/resources/models/opticalBench/menu/menu.blend and b/resources/models/opticalBench/menu/menu.blend differ
diff --git a/resources/models/opticalBench/menu/menu.blend1 b/resources/models/opticalBench/menu/menu.blend1
index d17002b44cb62a12e36d85f7615e6b60f52179cd..4360389eee6e64f08b116421b3215e7df81d0dfb 100644
Binary files a/resources/models/opticalBench/menu/menu.blend1 and b/resources/models/opticalBench/menu/menu.blend1 differ