diff --git a/Examples/BoneShaving/BoneShavingExample.cpp b/Examples/BoneShaving/BoneShavingExample.cpp
index accdeffb5cc276468a456fe26bf7724e52910ada..299c4151cfaae650a59c9c3e00af4024d7cfd3dc 100644
--- a/Examples/BoneShaving/BoneShavingExample.cpp
+++ b/Examples/BoneShaving/BoneShavingExample.cpp
@@ -88,10 +88,10 @@ main()
         InteractionType::CollidingObjToCollidingObjBoneDrilling, CollisionDetection::Type::PointSetToSphere));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light0", light);
 
     scene->getActiveCamera()->setPosition(Vec3d(0.0, 3.0, 25.0));
 
diff --git a/Examples/CameraController/CameraControllerExample.cpp b/Examples/CameraController/CameraControllerExample.cpp
index da1a7cf3b70f812377f93c8908f469aa27d6dd75..5427aadb8c5fdb44f4a3c19da9cef59670815711 100644
--- a/Examples/CameraController/CameraControllerExample.cpp
+++ b/Examples/CameraController/CameraControllerExample.cpp
@@ -77,10 +77,10 @@ main()
     scene->addController(camController);
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light0", light);
 
     // Run the simulation
     {
diff --git a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
index e53376d0aa3c235c1ed768f700fd20227f67617a..c7c067cb2577bb5a8f40c8c8258758557fed937b 100644
--- a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
+++ b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
@@ -456,15 +456,15 @@ main()
     scene->getActiveCamera()->setPosition(Vec3d(0.0, 15.0, 50.0));
 
     // Light
-    imstkNew<DirectionalLight> light1("Light1");
+    imstkNew<DirectionalLight> light1;
     light1->setFocalPoint(Vec3d(-1.0, -1.0, -1.0));
     light1->setIntensity(1.0);
-    scene->addLight(light1);
+    scene->addLight("light1", light1);
 
-    imstkNew<DirectionalLight> light2("Light2");
+    imstkNew<DirectionalLight> light2;
     light2->setFocalPoint(Vec3d(1.0, -1.0, -1.0));
     light2->setIntensity(1.0);
-    scene->addLight(light2);
+    scene->addLight("light2", light2);
 
     // Run the simulation
     {
diff --git a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
index c8272bfb9fdcacdac326e12dc2e0abc6ff312e20..dc639c8b32a4bbc868fe1ef5230851d1604ed522 100644
--- a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
+++ b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
@@ -84,10 +84,10 @@ main()
         scene->addSceneObject(volObject);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
         light->setIntensity(1);
-        scene->addLight(light);
+        scene->addLight("light0", light);
     }
 
     // Run the simulation
diff --git a/Examples/DebugRendering/DebugRenderingExample.cpp b/Examples/DebugRendering/DebugRenderingExample.cpp
index a83a04871a32e2bb27995407052ee9fd6783d903..8754d1aad8d728979c9160cd4b1148813830ea79 100644
--- a/Examples/DebugRendering/DebugRenderingExample.cpp
+++ b/Examples/DebugRendering/DebugRenderingExample.cpp
@@ -178,15 +178,15 @@ main()
     scene->getActiveCamera()->setPosition(Vec3d(0.0, 0.0, 50.0));
 
     // Light
-    imstkNew<DirectionalLight> light1("light1");
+    imstkNew<DirectionalLight> light1;
     light1->setFocalPoint(Vec3d(-1.0, -1.0, -1.0));
     light1->setIntensity(1.0);
-    scene->addLight(light1);
+    scene->addLight("light1", light1);
 
-    imstkNew<DirectionalLight> light2("light2");
+    imstkNew<DirectionalLight> light2;
     light2->setFocalPoint(Vec3d(1.0, -1.0, -1.0));
     light2->setIntensity(1.0);
-    scene->addLight(light2);
+    scene->addLight("light2", light2);
 
     // Run the simulation
     {
diff --git a/Examples/DeformableBody/DeformableBodyExample.cpp b/Examples/DeformableBody/DeformableBodyExample.cpp
index 58a4d74f0c7f127fc7966bff89017ac3ef58cda4..866d5c4c1f7119d9a8c5848a81ef8aaac739e282 100644
--- a/Examples/DeformableBody/DeformableBodyExample.cpp
+++ b/Examples/DeformableBody/DeformableBodyExample.cpp
@@ -106,10 +106,10 @@ main()
         scene->addSceneObject(planeObj);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
         light->setIntensity(1);
-        scene->addLight(light);
+        scene->addLight("light", light);
     }
 
     // Run the simulation
diff --git a/Examples/FemurCut/FemurCutExample.cpp b/Examples/FemurCut/FemurCutExample.cpp
index a83afaadacab034ce124f422b337d53be0bf6c4f..320b960830e6c9a9f4f3799e47417b8ce0777f7f 100644
--- a/Examples/FemurCut/FemurCutExample.cpp
+++ b/Examples/FemurCut/FemurCutExample.cpp
@@ -131,10 +131,10 @@ main()
     scene->getCollisionGraph()->addInteraction(interaction);
 
     // Light (white)
-    imstkNew<DirectionalLight> whiteLight("whiteLight");
+    imstkNew<DirectionalLight> whiteLight;
     whiteLight->setDirection(Vec3d(0.0, -8.0, 5.0));
     whiteLight->setIntensity(1.0);
-    scene->addLight(whiteLight);
+    scene->addLight("whiteLight", whiteLight);
 
     // Adjust camera
     scene->getActiveCamera()->setFocalPoint(0.25, 0.83, 1.58);
diff --git a/Examples/GeometryProcessing/GeometryProcessingExample.cpp b/Examples/GeometryProcessing/GeometryProcessingExample.cpp
index f2c196e7b652b144bbbd8a90a7843e09d1861ea1..8539cee933a755c9d388ba455c81ba6644384efd 100644
--- a/Examples/GeometryProcessing/GeometryProcessingExample.cpp
+++ b/Examples/GeometryProcessing/GeometryProcessingExample.cpp
@@ -109,10 +109,10 @@ main()
     scene->getActiveCamera()->setPosition(Vec3d(0.0, 12.0, 12.0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/GeometryTransforms/GeometryTransformsExample.cpp b/Examples/GeometryTransforms/GeometryTransformsExample.cpp
index 626b8226bd399aacc810b1d8bd4b274d4d249d7b..287d5f2e74c974c33fda3a290ab23458a5e6451c 100644
--- a/Examples/GeometryTransforms/GeometryTransformsExample.cpp
+++ b/Examples/GeometryTransforms/GeometryTransformsExample.cpp
@@ -113,10 +113,10 @@ main()
     scene->getActiveCamera()->setPosition(Vec3d(0.0, 30.0, 30.0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setDirection(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/Levelset/levelsetExample.cpp b/Examples/Levelset/levelsetExample.cpp
index 717cb042e4e52da4d6007c3a8e596d0121541ad1..ecbb08dfec1714c7c4cd57e6a4b8d5ed7206e22a 100644
--- a/Examples/Levelset/levelsetExample.cpp
+++ b/Examples/Levelset/levelsetExample.cpp
@@ -111,10 +111,10 @@ main()
         scene->addSceneObject(obj);
 
         // Light (white)
-        imstkNew<DirectionalLight> whiteLight("whiteLight");
+        imstkNew<DirectionalLight> whiteLight;
         whiteLight->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
         whiteLight->setIntensity(1.0);
-        scene->addLight(whiteLight);
+        scene->addLight("whitelight", whiteLight);
 
         // Adjust camera
         scene->getActiveCamera()->setPosition(0.0, 10.0, -10.0);
diff --git a/Examples/MultipleScenes/multipleScenes.cpp b/Examples/MultipleScenes/multipleScenes.cpp
index 1347ce26995065620e8dd54fe10b72b2fc867d5d..83bb19dd4e28c58ea6d76809ca9d48f8b5bd7242 100644
--- a/Examples/MultipleScenes/multipleScenes.cpp
+++ b/Examples/MultipleScenes/multipleScenes.cpp
@@ -211,19 +211,19 @@ createClothScene(std::string sceneName)
         scene->addSceneObject(clothObj);
 
         // Light (white)
-        imstkNew<DirectionalLight> whiteLight("whiteLight");
+        imstkNew<DirectionalLight> whiteLight;
         whiteLight->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
         whiteLight->setIntensity(1.0);
-        scene->addLight(whiteLight);
+        scene->addLight("whitelight", whiteLight);
 
         // Light (red)
-        imstkNew<SpotLight> colorLight("colorLight");
+        imstkNew<SpotLight> colorLight;
         colorLight->setPosition(Vec3d(-5.0, -3.0, 5.0));
         colorLight->setFocalPoint(Vec3d(0.0, -5.0, 5.0));
         colorLight->setIntensity(100.);
         colorLight->setColor(Color::Red);
         colorLight->setSpotAngle(30.0);
-        scene->addLight(colorLight);
+        scene->addLight("colorlight", colorLight);
 
         // Adjust camera
         scene->getActiveCamera()->setFocalPoint(0.0, -5.0, 5.0);
diff --git a/Examples/ObjectController/ObjectControllerExample.cpp b/Examples/ObjectController/ObjectControllerExample.cpp
index 0701337d16d079778b922820fa968f84318d90d1..78f2c4194af19253672f664344e90242ece85f05 100644
--- a/Examples/ObjectController/ObjectControllerExample.cpp
+++ b/Examples/ObjectController/ObjectControllerExample.cpp
@@ -81,10 +81,10 @@ main()
     cam->setFocalPoint(geometries[0]->getPosition());
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setDirection(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     //Run the simulation
     {
diff --git a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
index fc48cdf0cbc3d544d41af5217009254c96c4b6a1..19a6ddb71d01504a1ba329cadff7080b16b7b9fd 100644
--- a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
+++ b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
@@ -77,10 +77,10 @@ main()
     scene->getActiveCamera()->setFocalPoint(geom->getPosition());
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/Octree/OctreeExample.cpp b/Examples/Octree/OctreeExample.cpp
index 32cf71efac29b1bc1f662feeb5e67fa8b1dd590c..7ce63ab69ce0ce8300be2abebdab746a15369272 100644
--- a/Examples/Octree/OctreeExample.cpp
+++ b/Examples/Octree/OctreeExample.cpp
@@ -264,15 +264,15 @@ main()
 
     // Lights
     {
-        imstkNew<DirectionalLight> light1("Light 1");
+        imstkNew<DirectionalLight> light1;
         light1->setFocalPoint(Vec3d(-1.0, -1.0, -1.0));
         light1->setIntensity(1.0);
-        scene->addLight(light1);
+        scene->addLight("light 1", light1);
 
-        imstkNew<DirectionalLight> light2("Light 2");
+        imstkNew<DirectionalLight> light2;
         light2->setFocalPoint(Vec3d(1.0, -1.0, -1.0));
         light2->setIntensity(1.0);
-        scene->addLight(light2);
+        scene->addLight("light 2", light2);
     }
 
     // Run the simulation
diff --git a/Examples/OpenVRController/OpenVRControllerExample.cpp b/Examples/OpenVRController/OpenVRControllerExample.cpp
index 70f02959fa826da9a29d9ea3014505dc870abecc..7004c7baac72c35cc629ccd0b2749c9ad95585bd 100644
--- a/Examples/OpenVRController/OpenVRControllerExample.cpp
+++ b/Examples/OpenVRController/OpenVRControllerExample.cpp
@@ -118,10 +118,10 @@ main()
     scene->addSceneObject(tableObj);
 
     // Lights
-    imstkNew<DirectionalLight> dirLight("DirLight");
+    imstkNew<DirectionalLight> dirLight;
     dirLight->setIntensity(4);
     dirLight->setColor(Color(1.0, 0.95, 0.8));
-    scene->addLight(dirLight);
+    scene->addLight("dirlight", dirLight);
 
     {
         // Add a module to run the viewer
diff --git a/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp b/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
index 64ba1f18d8c2ad744b7056844915804e0f40319a..2379bcf831509258248b7ffa199d87d85487b6bf 100644
--- a/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
+++ b/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
@@ -167,19 +167,19 @@ main()
         scene->addSceneObject(clothObj);
 
         // Light (white)
-        imstkNew<DirectionalLight> whiteLight("whiteLight");
+        imstkNew<DirectionalLight> whiteLight;
         whiteLight->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
         whiteLight->setIntensity(1.0);
-        scene->addLight(whiteLight);
+        scene->addLight("whitelight", whiteLight);
 
         // Light (red)
-        imstkNew<SpotLight> colorLight("colorLight");
+        imstkNew<SpotLight> colorLight;
         colorLight->setPosition(Vec3d(-5.0, -3.0, 5.0));
         colorLight->setFocalPoint(Vec3d(0.0, -5.0, 5.0));
         colorLight->setIntensity(100.);
         colorLight->setColor(Color::Red);
         colorLight->setSpotAngle(30.0);
-        scene->addLight(colorLight);
+        scene->addLight("colorlight", colorLight);
 
         // Adjust camera
         scene->getActiveCamera()->setFocalPoint(0.0, -5.0, 5.0);
diff --git a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
index 5eaf9b397471d49e2bd103a9727d21ccd07da2e6..65fc121cd9d1418d8bfbd06d8a97a781240d0872 100644
--- a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
+++ b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
@@ -147,10 +147,10 @@ main()
     }
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5, -8, -5));
     light->setIntensity(1);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Set Camera configuration
     std::shared_ptr<Camera> cam = scene->getActiveCamera();
diff --git a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
index a4c8d5c70ce835c9942d716b336ec65ceb2f261f..724557236341f6737adbaa3dc8f90f42eeb16f7d 100644
--- a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
+++ b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
@@ -159,10 +159,10 @@ main()
             InteractionType::PbdObjToPbdObjCollision, CollisionDetection::Type::MeshToMeshBruteForce));
 
         // Light
-        imstkNew<DirectionalLight> light("Light");
+        imstkNew<DirectionalLight> light;
         light->setFocalPoint(Vec3d(5, -8, -5));
         light->setIntensity(1);
-        scene->addLight(light);
+        scene->addLight("light0", light);
     }
 
     // Run the simulation
diff --git a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
index d98e9d784a1e31651f1a4a6a7a211c9c8a8f3cdf..11563b357b5dcb685310446c559ee76d473f94b4 100644
--- a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
+++ b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
@@ -209,15 +209,15 @@ main()
             InteractionType::PbdObjToPbdObjCollision, CollisionDetection::Type::MeshToMeshBruteForce));
 
         // Light
-        imstkNew<DirectionalLight> light("Light1");
+        imstkNew<DirectionalLight> light;
         light->setFocalPoint(Vec3d(5.0, -8.0, 5.0));
         light->setIntensity(1.0);
-        scene->addLight(light);
+        scene->addLight("light", light);
 
-        imstkNew<DirectionalLight> light2("Light2");
+        imstkNew<DirectionalLight> light2;
         light2->setFocalPoint(-Vec3d(5, -8, 5));
         light2->setIntensity(1.2);
-        scene->addLight(light2);
+        scene->addLight("light2", light2);
     }
 
     // Run the simulation
diff --git a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
index 7c08770fe2d13b1a46eea6605394ccd54dbe6104..72f9f312bfae3f89ad0972b052233355149c8956 100644
--- a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
+++ b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
@@ -65,10 +65,10 @@ main()
     scene->addSceneObject(createAndAddPbdObject(tetMeshFileName));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5, -8, -5));
     light->setIntensity(1.1);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/PBD/PBDInjection/PBDInjectExample.cpp b/Examples/PBD/PBDInjection/PBDInjectExample.cpp
index 8f0e81f156570896b006a66eef89bc21ae93dc1d..ab7581c8b0a70f5786320a894b20476c8394143e 100644
--- a/Examples/PBD/PBDInjection/PBDInjectExample.cpp
+++ b/Examples/PBD/PBDInjection/PBDInjectExample.cpp
@@ -123,10 +123,10 @@ main()
     //scene->getCollisionGraph()->addInteraction(interaction);
 
     // Light
-    imstkNew<DirectionalLight> light("Light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5, -8, -5));
     light->setIntensity(1);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/PBDCutting/PBDCuttingExample.cpp b/Examples/PBDCutting/PBDCuttingExample.cpp
index dc3e9761cb37c7b63e54fcc820a83ab73f60ce3a..a01412b13823fad02604a7ce0ca2d0ec295f63f4 100644
--- a/Examples/PBDCutting/PBDCuttingExample.cpp
+++ b/Examples/PBDCutting/PBDCuttingExample.cpp
@@ -192,10 +192,10 @@ main()
     scene->getActiveCamera()->setFocalPoint(Vec3d(0, -50, 0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     //Run the simulation
     {
diff --git a/Examples/PBDPicking/PBDPickingExample.cpp b/Examples/PBDPicking/PBDPickingExample.cpp
index c28feeee6e3acc27628e64a3928c2148688e6f55..6bf26551983bfa165409a29fec1061ec13632bd6 100644
--- a/Examples/PBDPicking/PBDPickingExample.cpp
+++ b/Examples/PBDPicking/PBDPickingExample.cpp
@@ -246,10 +246,10 @@ main()
     scene->getActiveCamera()->setFocalPoint(Vec3d(0, -50, 0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     //Run the simulation
     {
diff --git a/Examples/Rendering/RenderingExample.cpp b/Examples/Rendering/RenderingExample.cpp
index 6dc468abb349733b13c797e72b78dc3c270d202f..90633cd4efe11c285c215f14e457b65cf5b4bc6a 100644
--- a/Examples/Rendering/RenderingExample.cpp
+++ b/Examples/Rendering/RenderingExample.cpp
@@ -83,10 +83,10 @@ main()
         scene->getActiveCamera()->setFocalPoint(0.0, 0.25, 0.0);
 
         // Lights
-        imstkNew<DirectionalLight> dirLight("DirectionalLight");
+        imstkNew<DirectionalLight> dirLight;
         dirLight->setIntensity(10.0);
         dirLight->setColor(Color(1.0, 0.95, 0.8));
-        scene->addLight(dirLight);
+        scene->addLight("directionalLight", dirLight);
 
         // Plane
         auto                     planeObj = apiutils::createVisualAnalyticalSceneObject("Plane", scene, "VisualPlane", Vec3d(10.0, 10.0, 10.0));
diff --git a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
index ab2698154dc872a34b0c65c0146c8906f2f02f8a..267b8004adb23376ece015feab4d6312836e226a 100644
--- a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
+++ b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
@@ -188,9 +188,9 @@ main()
         scene->getActiveCamera()->setPosition(Vec3d(300.0, 300.0, 300.0));
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setIntensity(1.0);
-        scene->addLight(light);
+        scene->addLight("light", light);
     }
 
     // Run the simulation
diff --git a/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp b/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
index 618aa0c0c3adef754e5ea77204bb231ad8b4d8f2..fa9d857d9f91199e3b12726d535293a863fb199d 100644
--- a/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
+++ b/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
@@ -153,9 +153,9 @@ main()
         scene->getActiveCamera()->setPosition(0.0, 40.0, 40.0);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setIntensity(1.0);
-        scene->addLight(light);
+        scene->addLight("light", light);
     }
 
     // Run the simulation
diff --git a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
index 8b026bc027ddb2c77c04970cf6270d4429bc3ee5..98eb057e922e013330e26809c913712cf6a31a3c 100644
--- a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
+++ b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
@@ -229,9 +229,9 @@ main()
     scene->getActiveCamera()->setPosition(Vec3d(300.0, 300.0, 300.0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light", light);
 
     // Run the simulation
     {
diff --git a/Examples/SDFHaptics/SDFHapticsExample.cpp b/Examples/SDFHaptics/SDFHapticsExample.cpp
index 7be500955ec17a16275e1ad77c3152a9de4a967a..be42b31d7d51f84b3736d55f318f55b17e313a4c 100644
--- a/Examples/SDFHaptics/SDFHapticsExample.cpp
+++ b/Examples/SDFHaptics/SDFHapticsExample.cpp
@@ -79,11 +79,11 @@ main()
         }
 
         // Light (white)
-        imstkNew<DirectionalLight> whiteLight("whiteLight");
+        imstkNew<DirectionalLight> whiteLight;
         {
             whiteLight->setDirection(Vec3d(5.0, -8.0, -5.0));
             whiteLight->setIntensity(1.0);
-            scene->addLight(whiteLight);
+            scene->addLight("whitelight", whiteLight);
         }
     }
 
diff --git a/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp b/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
index 628ba2706f2bf6da93e2c789c08ba254fc87fbf7..68282cb79ce18ba97b68076ca71d4ee3a8dea166 100644
--- a/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
+++ b/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
@@ -266,10 +266,10 @@ main()
         scene->addSceneObject(sphFluidBox);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setDirection(0.0, -1.0, -1.0);
         light->setIntensity(1);
-        scene->addLight(light);
+        scene->addLight("light", light);
     }
 
     // Run the simulation
diff --git a/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp b/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
index f4057cfc22f17a0d94b5cfeb1016325cefb8ac33..3a6842746602f72289a4c01bdcfb3c599cf31e9d 100644
--- a/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
+++ b/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
@@ -182,10 +182,10 @@ main()
         scene->getCollisionGraph()->addInteraction(interaction);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setDirection(0.0, -1.0, -1.0);
         light->setIntensity(1);
-        scene->addLight(light);
+        scene->addLight("light", light);
     }
 
     // Run the simulation
diff --git a/Examples/SPHFluid/SPHFluidExample.hpp b/Examples/SPHFluid/SPHFluidExample.hpp
index 41dde2cf3ce630c538e6429a3b39a27284beac19..b09d7a797c340e5ddebf5f8b161c9423adc52a30 100644
--- a/Examples/SPHFluid/SPHFluidExample.hpp
+++ b/Examples/SPHFluid/SPHFluidExample.hpp
@@ -108,10 +108,10 @@ main(int argc, char* argv[])
     scene->getActiveCamera()->setPosition(-0.475, 8.116, -6.728);
 
     // configure light (white)
-    imstkNew<DirectionalLight> whiteLight("whiteLight");
+    imstkNew<DirectionalLight> whiteLight;
     whiteLight->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     whiteLight->setIntensity(1.5);
-    scene->addLight(whiteLight);
+    scene->addLight("whitelight", whiteLight);
 
     // Run the simulation
     {
diff --git a/Examples/Screenshot/ScreenshotExample.cpp b/Examples/Screenshot/ScreenshotExample.cpp
index 8de5a6d133731a857fb6506a39afac9fe63a346e..cf23b74884025ff6c7c2789927889313eabfaa1f 100644
--- a/Examples/Screenshot/ScreenshotExample.cpp
+++ b/Examples/Screenshot/ScreenshotExample.cpp
@@ -73,12 +73,12 @@ main()
     sphereObj->setVisualGeometry(sphereGeom);
 
     // Light (white)
-    imstkNew<PointLight> whiteLight("whiteLight");
+    imstkNew<PointLight> whiteLight;
     whiteLight->setIntensity(1.0);
     whiteLight->setPosition(Vec3d(5.0, 8.0, 5.0));
 
     // Light (red)
-    imstkNew<SpotLight> colorLight("colorLight");
+    imstkNew<SpotLight> colorLight;
     colorLight->setPosition(Vec3d(4.0, -3.0, 1.0));
     colorLight->setFocalPoint(Vec3d(0.0, 0.0, 0.0));
     colorLight->setIntensity(1.0);
@@ -89,8 +89,8 @@ main()
     scene->addSceneObject(planeObj);
     scene->addSceneObject(cubeObj);
     scene->addSceneObject(sphereObj);
-    scene->addLight(whiteLight);
-    scene->addLight(colorLight);
+    scene->addLight("whitelight", whiteLight);
+    scene->addLight("colorlight", colorLight);
 
     // Update Camera
     scene->getActiveCamera()->setPosition(Vec3d(-5.5, 2.5, 32.0));
diff --git a/Examples/Vessel/vesselExample.cpp b/Examples/Vessel/vesselExample.cpp
index b4835a69ce31f5ee3af793f6e7506c759009b45d..3ace436fb1045557a5603f6f5198c99ddced9db7 100644
--- a/Examples/Vessel/vesselExample.cpp
+++ b/Examples/Vessel/vesselExample.cpp
@@ -242,10 +242,10 @@ main()
         scene->getCollisionGraph()->addInteraction(collisionInteraction);
 
         // Light
-        imstkNew<DirectionalLight> light("light");
+        imstkNew<DirectionalLight> light;
         light->setDirection(0.0, 1.0, -1.0);
         light->setIntensity(1.0);
-        scene->addLight(light);
+        scene->addLight("light0", light);
     }
 
     // Run the simulation
diff --git a/Examples/VirtualCoupling/VirtualCouplingExample.cpp b/Examples/VirtualCoupling/VirtualCouplingExample.cpp
index 2b467f86d1417254d3ee4f93b7fe694f483793ef..2618da3eabc6b7035b4a05710ad293083c2b36d7 100644
--- a/Examples/VirtualCoupling/VirtualCouplingExample.cpp
+++ b/Examples/VirtualCoupling/VirtualCouplingExample.cpp
@@ -112,10 +112,10 @@ main()
     scene->getActiveCamera()->setFocalPoint(Vec3d(0, 0, 0));
 
     // Light
-    imstkNew<DirectionalLight> light("light");
+    imstkNew<DirectionalLight> light;
     light->setFocalPoint(Vec3d(5.0, -8.0, -5.0));
     light->setIntensity(1.0);
-    scene->addLight(light);
+    scene->addLight("light0", light);
 
     //Run the simulation
     {
diff --git a/Source/Scene/Testing/imstkSceneTest.cpp b/Source/Scene/Testing/imstkSceneTest.cpp
index 9e8c6a0af029fb488dff642aa571015f9d89dbf5..7fcaeb4abfc960fe690af1c9dc906772928387a6 100644
--- a/Source/Scene/Testing/imstkSceneTest.cpp
+++ b/Source/Scene/Testing/imstkSceneTest.cpp
@@ -141,15 +141,14 @@ TEST(imstkSceneTest, add_remove_lights)
 {
     Scene m_scene("sample scene");
 
-    auto light0 = std::make_shared<SpotLight>("light0");
-    m_scene.addLight(light0);
+    auto light0 = std::make_shared<SpotLight>();
+    m_scene.addLight("light0", light0);
     EXPECT_EQ(m_scene.getLight("light0"), light0);
     EXPECT_EQ(m_scene.getLights().size(), 1);
-    EXPECT_EQ(m_scene.getLights()[0]->getName(), "light0");
 
     // Add another light with the same name
-    auto light0_2 = std::make_shared<DirectionalLight>("light0");
-    m_scene.addLight(light0_2);
+    auto light0_2 = std::make_shared<DirectionalLight>();
+    m_scene.addLight("light1", light0_2);
     EXPECT_NE(m_scene.getLight("light0"), light0_2);
 
     // test remove light
diff --git a/Source/Scene/imstkScene.cpp b/Source/Scene/imstkScene.cpp
index b1ff187af0674815c6e99f1966ceb91fddc37485..751faecd8825fae3778f4bedf81b7adb06186ae0 100644
--- a/Source/Scene/imstkScene.cpp
+++ b/Source/Scene/imstkScene.cpp
@@ -250,20 +250,6 @@ Scene::getSceneObject(const std::string& name) const
     return (iter == m_sceneObjects.end()) ? nullptr : *iter;
 }
 
-//bool
-//Scene::hasSceneObject(std::shared_ptr<SceneObject> sceneObject)
-//{
-//    return m_sceneObjects.count(sceneObject) != 0;
-//}
-//
-//bool
-//Scene::hasSceneObject(const std::string& name)
-//{
-//    auto iter = std::find_if(m_sceneObjects.begin(), m_sceneObjects.end(),
-//        [name](const std::shared_ptr<SceneObject>& i) { return i->getName() == name; });
-//    return iter != m_sceneObjects.end();
-//}
-
 const std::vector<std::shared_ptr<VisualModel>>
 Scene::getDebugRenderModels() const
 {
@@ -369,20 +355,18 @@ Scene::getLight(const std::string& lightName) const
 }
 
 void
-Scene::addLight(std::shared_ptr<Light> newLight)
+Scene::addLight(const std::string& name, std::shared_ptr<Light> newLight)
 {
-    std::string newlightName = newLight->getName();
-
-    if (this->getLight(newlightName) != nullptr)
+    if (this->getLight(name) != nullptr)
     {
-        LOG(WARNING) << "Can not add light: '" << newlightName
+        LOG(WARNING) << "Can not add light: '" << name
                      << "' is already registered in this scene.";
         return;
     }
 
-    m_lightsMap[newlightName] = newLight;
+    m_lightsMap[name] = newLight;
     this->postEvent(Event(modified()));
-    LOG(INFO) << newlightName << " light added to " << m_name;
+    LOG(INFO) << name << " light added to " << m_name;
 }
 
 void
@@ -429,7 +413,7 @@ Scene::getCamera(const std::string name) const
 }
 
 void
-Scene::addCamera(std::string name, std::shared_ptr<Camera> cam)
+Scene::addCamera(const std::string& name, std::shared_ptr<Camera> cam)
 {
     if (m_cameras.find(name) != m_cameras.end())
     {
diff --git a/Source/Scene/imstkScene.h b/Source/Scene/imstkScene.h
index 41c4472f2a2b298ebc0e6aadc0be319b446645cc..dbe860f0fd2c0491385b8a0d443a2d59271a589c 100644
--- a/Source/Scene/imstkScene.h
+++ b/Source/Scene/imstkScene.h
@@ -210,7 +210,7 @@ public:
     ///
     /// \brief Add light from the scene
     ///
-    void addLight(std::shared_ptr<Light> newLight);
+    void addLight(const std::string& name, std::shared_ptr<Light> newLight);
 
     ///
     /// \brief Remove light with a given name from the scene
@@ -255,7 +255,7 @@ public:
     ///
     /// \brief Set the camera for the scene
     ///
-    void addCamera(std::string name, std::shared_ptr<Camera> cam);
+    void addCamera(const std::string& name, std::shared_ptr<Camera> cam);
 
     ///
     /// \brief Switch the active camera to the one requested by name.
diff --git a/Source/SceneEntities/Lights/imstkDirectionalLight.h b/Source/SceneEntities/Lights/imstkDirectionalLight.h
index e88e12fa408ba2e3373493e9eb80f08b4f235f49..7c56afb0ec14b909200b279d761dd3f4904c738b 100644
--- a/Source/SceneEntities/Lights/imstkDirectionalLight.h
+++ b/Source/SceneEntities/Lights/imstkDirectionalLight.h
@@ -36,7 +36,7 @@ namespace imstk
 class DirectionalLight : public Light
 {
 public:
-    DirectionalLight(const std::string& name) : Light(name, LightType::Directional)
+    DirectionalLight() : Light(LightType::Directional)
     {
         this->setFocalPoint(-1.0f, -1.0f, -1.0f);
     }
diff --git a/Source/SceneEntities/Lights/imstkLight.cpp b/Source/SceneEntities/Lights/imstkLight.cpp
index ee9dea0c8b1828510ff7dae9051579f3b64c91d6..fc1604d4b41bb3e263627a4f840730a4a092372e 100644
--- a/Source/SceneEntities/Lights/imstkLight.cpp
+++ b/Source/SceneEntities/Lights/imstkLight.cpp
@@ -36,6 +36,4 @@ Light::setFocalPoint(const float& x, const float& y, const float& z)
         LOG(WARNING) << "Directional lights can't have focal point at (0, 0, 0)";
     }
 }
-
-//---------------------------------------------------------------------------------
 } // imstk
diff --git a/Source/SceneEntities/Lights/imstkLight.h b/Source/SceneEntities/Lights/imstkLight.h
index c111a4d41bf45c8d5a31f3256e7165fcedb97d93..8b2106aaf4f307e1f6ea4ec5292b7d2b9715f424 100644
--- a/Source/SceneEntities/Lights/imstkLight.h
+++ b/Source/SceneEntities/Lights/imstkLight.h
@@ -107,18 +107,8 @@ public:
     ///
     void setIntensity(double intensity) { m_intensity = (float)intensity; }
 
-    ///
-    /// \brief Get the light name
-    ///
-    const std::string& getName() const { return m_name; }
-
-    ///
-    /// \brief Set the light name
-    ///
-    void setName(std::string name) { m_name = name; }
-
 protected:
-    Light(const std::string& name, const LightType& type) : SceneEntity(), m_name(name), m_type(type) { }
+    Light(const LightType& type) : SceneEntity(), m_type(type) { }
 
     // properties with defaults
     float m_intensity   = 1.;
@@ -126,7 +116,6 @@ protected:
     bool  m_switchState = true;
     Vec3f m_focalPoint  = Vec3f(0, 0, 0);
 
-    std::string m_name;
-    LightType   m_type;
+    LightType m_type;
 };
 } // imstk
\ No newline at end of file
diff --git a/Source/SceneEntities/Lights/imstkPointLight.h b/Source/SceneEntities/Lights/imstkPointLight.h
index a624d6eb95ab78a61b2f0a874fc88a3ee209bd2c..690e00357a122fda790ce4a690df5be68c55abf3 100644
--- a/Source/SceneEntities/Lights/imstkPointLight.h
+++ b/Source/SceneEntities/Lights/imstkPointLight.h
@@ -39,7 +39,7 @@ public:
     ///
     /// \brief Constructors
     ///
-    PointLight(const std::string& name, const LightType& type = LightType::Point) : Light(name, type) { }
+    PointLight(const LightType& type = LightType::Point) : Light(type) { }
 
     virtual ~PointLight() override = default;
 
diff --git a/Source/SceneEntities/Lights/imstkSpotLight.h b/Source/SceneEntities/Lights/imstkSpotLight.h
index 9d87aae425eede6a75b8b009dc33a227872071bc..c9c3205a1095a82fb500940fcba9acf1ed55a22a 100644
--- a/Source/SceneEntities/Lights/imstkSpotLight.h
+++ b/Source/SceneEntities/Lights/imstkSpotLight.h
@@ -38,7 +38,7 @@ public:
     ///
     /// \brief Constructors
     ///
-    SpotLight(const std::string& name) : PointLight(name, LightType::Spot)
+    SpotLight() : PointLight(LightType::Spot)
     {
         m_coneAngle = 10.0f;
     }