diff --git a/Examples/BoneShaving/BoneShavingExample.cpp b/Examples/BoneShaving/BoneShavingExample.cpp
index 314d687e132224d88641da73f77ba53289ac6f9c..accdeffb5cc276468a456fe26bf7724e52910ada 100644
--- a/Examples/BoneShaving/BoneShavingExample.cpp
+++ b/Examples/BoneShaving/BoneShavingExample.cpp
@@ -25,7 +25,7 @@
 #include "imstkHapticDeviceClient.h"
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/CameraController/CameraControllerExample.cpp b/Examples/CameraController/CameraControllerExample.cpp
index a50bb128bc7b190acb106fd2693cee921faaad19..da1a7cf3b70f812377f93c8908f469aa27d6dd75 100644
--- a/Examples/CameraController/CameraControllerExample.cpp
+++ b/Examples/CameraController/CameraControllerExample.cpp
@@ -24,7 +24,7 @@
 #include "imstkHapticDeviceClient.h"
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
index b586424f621133e942d2dc699f94f827d760fe55..e53376d0aa3c235c1ed768f700fd20227f67617a 100644
--- a/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
+++ b/Examples/CollisionDetection/ManualCDWithOctree/ManualCDWithOctreeExample.cpp
@@ -25,7 +25,7 @@
 #include "imstkDebugRenderGeometry.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
 #include "imstkOctreeBasedCD.h"
diff --git a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
index 3ddc19e30c01997adaaa1688c6f73c833eb03086..c8272bfb9fdcacdac326e12dc2e0abc6ff312e20 100644
--- a/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
+++ b/Examples/CreateEnclosingMesh/CreateEnclosingMesh.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkGeometryUtilities.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/DebugRendering/DebugRenderingExample.cpp b/Examples/DebugRendering/DebugRenderingExample.cpp
index 819b50af7e635501d2fe0883a5a96ed929dfb2e9..a83a04871a32e2bb27995407052ee9fd6783d903 100644
--- a/Examples/DebugRendering/DebugRenderingExample.cpp
+++ b/Examples/DebugRendering/DebugRenderingExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkDebugRenderGeometry.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/DeformableBody/DeformableBodyExample.cpp b/Examples/DeformableBody/DeformableBodyExample.cpp
index 3e6e0e4f998a22ac2be2c156484f664b13a58aa0..58a4d74f0c7f127fc7966bff89017ac3ef58cda4 100644
--- a/Examples/DeformableBody/DeformableBodyExample.cpp
+++ b/Examples/DeformableBody/DeformableBodyExample.cpp
@@ -24,7 +24,7 @@
 #include "imstkFeDeformableObject.h"
 #include "imstkFEMDeformableBodyModel.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/FemurCut/FemurCutExample.cpp b/Examples/FemurCut/FemurCutExample.cpp
index 40c976569dec5f7f38711b79d1c661b6912c3fad..a83afaadacab034ce124f422b337d53be0bf6c4f 100644
--- a/Examples/FemurCut/FemurCutExample.cpp
+++ b/Examples/FemurCut/FemurCutExample.cpp
@@ -26,7 +26,7 @@
 #include "imstkKeyboardSceneControl.h"
 #include "imstkLevelSetCH.h"
 #include "imstkLevelSetModel.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/GeometryProcessing/GeometryProcessingExample.cpp b/Examples/GeometryProcessing/GeometryProcessingExample.cpp
index 5e198b2b1cbd1697bc6d1376b6376131f71e4dfd..f2c196e7b652b144bbbd8a90a7843e09d1861ea1 100644
--- a/Examples/GeometryProcessing/GeometryProcessingExample.cpp
+++ b/Examples/GeometryProcessing/GeometryProcessingExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkDataArray.h"
 #include "imstkImageData.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkNew.h"
diff --git a/Examples/GeometryTransforms/GeometryTransformsExample.cpp b/Examples/GeometryTransforms/GeometryTransformsExample.cpp
index d612eed653d9ef84097ad211a076d604f4183767..626b8226bd399aacc810b1d8bd4b274d4d249d7b 100644
--- a/Examples/GeometryTransforms/GeometryTransformsExample.cpp
+++ b/Examples/GeometryTransforms/GeometryTransformsExample.cpp
@@ -23,7 +23,7 @@
 #include "imstkCamera.h"
 #include "imstkCylinder.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/Levelset/levelsetExample.cpp b/Examples/Levelset/levelsetExample.cpp
index 0256682ce45d2657e631d6086d9d894216dcee51..717cb042e4e52da4d6007c3a8e596d0121541ad1 100644
--- a/Examples/Levelset/levelsetExample.cpp
+++ b/Examples/Levelset/levelsetExample.cpp
@@ -23,7 +23,7 @@
 #include "imstkKeyboardSceneControl.h"
 #include "imstkLevelSetDeformableObject.h"
 #include "imstkLevelSetModel.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/MultipleScenes/multipleScenes.cpp b/Examples/MultipleScenes/multipleScenes.cpp
index e1b4897380f75eee9db89b4ea16503da0f2588ae..1347ce26995065620e8dd54fe10b72b2fc867d5d 100644
--- a/Examples/MultipleScenes/multipleScenes.cpp
+++ b/Examples/MultipleScenes/multipleScenes.cpp
@@ -22,7 +22,8 @@
 #include "imstkCamera.h"
 #include "imstkConsoleModule.h"
 #include "imstkKeyboardDeviceClient.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
+#include "imstkSpotLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkNew.h"
diff --git a/Examples/ObjectController/ObjectControllerExample.cpp b/Examples/ObjectController/ObjectControllerExample.cpp
index 99db5e0b61ded5a77456a7e3b9ac6274d6918394..0701337d16d079778b922820fa968f84318d90d1 100644
--- a/Examples/ObjectController/ObjectControllerExample.cpp
+++ b/Examples/ObjectController/ObjectControllerExample.cpp
@@ -27,7 +27,7 @@
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
index 8d586705c6c8cb8a38ccecfd6b28cffeb971afa4..fc48cdf0cbc3d544d41af5217009254c96c4b6a1 100644
--- a/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
+++ b/Examples/ObjectControllerDummyClient/ObjectCtrlDummyClientExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkCollidingObject.h"
 #include "imstkDummyClient.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkNew.h"
 #include "imstkOrientedBox.h"
diff --git a/Examples/Octree/OctreeExample.cpp b/Examples/Octree/OctreeExample.cpp
index da1d90c76c21fed29fb49879243e660c8d45769b..32cf71efac29b1bc1f662feeb5e67fa8b1dd590c 100644
--- a/Examples/Octree/OctreeExample.cpp
+++ b/Examples/Octree/OctreeExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkDebugRenderGeometry.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkLooseOctree.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/OpenVRController/OpenVRControllerExample.cpp b/Examples/OpenVRController/OpenVRControllerExample.cpp
index 74491f6d54b9338dfdd796023bdb4afe53e477ba..70f02959fa826da9a29d9ea3014505dc870abecc 100644
--- a/Examples/OpenVRController/OpenVRControllerExample.cpp
+++ b/Examples/OpenVRController/OpenVRControllerExample.cpp
@@ -20,7 +20,7 @@
 =========================================================================*/
 
 #include "imstkCamera.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkNew.h"
diff --git a/Examples/PBD/PBDCloth/pbdClothExample.cpp b/Examples/PBD/PBDCloth/pbdClothExample.cpp
index 3002dfe2b02bdb12e04c2203c426c2d122abcee5..fc86c0a84e17e2194cda6c3e43a30b4fed4a2165 100644
--- a/Examples/PBD/PBDCloth/pbdClothExample.cpp
+++ b/Examples/PBD/PBDCloth/pbdClothExample.cpp
@@ -23,7 +23,7 @@
 #include "imstkImageData.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp b/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
index df20fdeee9208ed804fd8945dd2cb7f369364004..64ba1f18d8c2ad744b7056844915804e0f40319a 100644
--- a/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
+++ b/Examples/PBD/PBDClothRemap/pbdClothRemapExample.cpp
@@ -22,7 +22,8 @@
 #include "imstkCamera.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
+#include "imstkSpotLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
index 07b382ee40359ccee5bae0d22b0fe1af3bbec987..5eaf9b397471d49e2bd103a9727d21ccd07da2e6 100644
--- a/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
+++ b/Examples/PBD/PBDCollisionMultipleObjects/PBDCollisionMultipleObjectsExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkCollisionGraph.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
index 8a07a6e223de6734414dc2ca0213615fca134b89..a4c8d5c70ce835c9942d716b336ec65ceb2f261f 100644
--- a/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
+++ b/Examples/PBD/PBDCollisionOneObject/PBDCollisionOneObjectExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkCollisionGraph.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
index 60d0e78d8604e7fc68a1626450b99e79a3a65ceb..d98e9d784a1e31651f1a4a6a7a211c9c8a8f3cdf 100644
--- a/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
+++ b/Examples/PBD/PBDCollisionStairs/PBDCollisionStairsExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkCollisionGraph.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
index af1fa47207317c7e3d3be207e1354ed4fcbd460c..7c08770fe2d13b1a46eea6605394ccd54dbe6104 100644
--- a/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
+++ b/Examples/PBD/PBDDeformableObject/PBD3DDeformableObject.cpp
@@ -21,7 +21,7 @@
 
 #include "imstkCamera.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/PBD/PBDInjection/PBDInjectExample.cpp b/Examples/PBD/PBDInjection/PBDInjectExample.cpp
index 37de20a2fe9e76c7c02a4310be583ac9047cac69..8f0e81f156570896b006a66eef89bc21ae93dc1d 100644
--- a/Examples/PBD/PBDInjection/PBDInjectExample.cpp
+++ b/Examples/PBD/PBDInjection/PBDInjectExample.cpp
@@ -24,7 +24,7 @@
 #include "imstkImageData.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkOneToOneMap.h"
 #include "imstkPbdModel.h"
diff --git a/Examples/PBDCutting/PBDCuttingExample.cpp b/Examples/PBDCutting/PBDCuttingExample.cpp
index d372d7611fe86d2ed865d83745842ac188e0f3b7..dc3e9761cb37c7b63e54fcc820a83ab73f60ce3a 100644
--- a/Examples/PBDCutting/PBDCuttingExample.cpp
+++ b/Examples/PBDCutting/PBDCuttingExample.cpp
@@ -24,7 +24,7 @@
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/PBDPicking/PBDPickingExample.cpp b/Examples/PBDPicking/PBDPickingExample.cpp
index 71c3845b0bd826ac84d8b9449f34dc59fea339dc..c28feeee6e3acc27628e64a3928c2148688e6f55 100644
--- a/Examples/PBDPicking/PBDPickingExample.cpp
+++ b/Examples/PBDPicking/PBDPickingExample.cpp
@@ -26,7 +26,7 @@
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardSceneControl.h"
 #include "imstkLaparoscopicToolController.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/ReducedFEM/ReducedFEM.cpp b/Examples/ReducedFEM/ReducedFEM.cpp
index 4192ca9f1588ec591875cd89bd534a94ca965dca..34f315e436c58e76dd7ff79efb677d50b0b26690 100644
--- a/Examples/ReducedFEM/ReducedFEM.cpp
+++ b/Examples/ReducedFEM/ReducedFEM.cpp
@@ -28,7 +28,7 @@
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
 #include "imstkOneToOneMap.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkCamera.h"
 #include "imstkReducedStVKBodyModel.h"
 #include "imstkReducedFeDeformableObject.h"
diff --git a/Examples/Rendering/RenderingExample.cpp b/Examples/Rendering/RenderingExample.cpp
index 17fd9a6ba26551310251b1d4f80dc3f98ff59b51..6dc468abb349733b13c797e72b78dc3c270d202f 100644
--- a/Examples/Rendering/RenderingExample.cpp
+++ b/Examples/Rendering/RenderingExample.cpp
@@ -23,7 +23,7 @@
 #include "imstkCamera.h"
 #include "imstkIBLProbe.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
index 01b4d27ea8705b0bf9bff6d5e7fce8ad9a84db53..ab2698154dc872a34b0c65c0146c8906f2f02f8a 100644
--- a/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
+++ b/Examples/RigidBodyDynamics/RigidBodyDynamicsExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkIsometricMap.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp b/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
index 5968337071aad3bc76fea619a45b4e5469c1b3ff..618aa0c0c3adef754e5ea77204bb231ad8b4d8f2 100644
--- a/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
+++ b/Examples/RigidBodyDynamics2/RigidBodyDynamicsExample2.cpp
@@ -26,7 +26,7 @@
 #include "imstkImplicitGeometryToImageData.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
index 0dcc94293ce39ada4257f2e345e47e91d7651a15..8b026bc027ddb2c77c04970cf6270d4429bc3ee5 100644
--- a/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
+++ b/Examples/RigidBodyVirtualCoupling/RigidBodyVirtualCouplingExample.cpp
@@ -24,7 +24,7 @@
 #include "imstkHapticDeviceManager.h"
 #include "imstkIsometricMap.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/SDFHaptics/SDFHapticsExample.cpp b/Examples/SDFHaptics/SDFHapticsExample.cpp
index 60badea5d7b914d41f08bb8993f6faabd6aecc3f..7be500955ec17a16275e1ad77c3152a9de4a967a 100644
--- a/Examples/SDFHaptics/SDFHapticsExample.cpp
+++ b/Examples/SDFHaptics/SDFHapticsExample.cpp
@@ -26,7 +26,7 @@
 #include "imstkImageData.h"
 #include "imstkImplicitFunctionFiniteDifferenceFunctor.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkLogger.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
diff --git a/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp b/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
index 592832d12e13e91170b9ef9626a65d40ad72ea79..628ba2706f2bf6da93e2c789c08ba254fc87fbf7 100644
--- a/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
+++ b/Examples/SPH-FEM-PBD/sphFemPbdExample.cpp
@@ -25,7 +25,7 @@
 #include "imstkFEMDeformableBodyModel.h"
 #include "imstkImageData.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp b/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
index 8d8edd2e88d711a0095d9de6027e499b98f627f8..f4057cfc22f17a0d94b5cfeb1016325cefb8ac33 100644
--- a/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
+++ b/Examples/SPH-Obj-SDF/SPH-Obj-SDFInteractionExample.cpp
@@ -22,7 +22,7 @@
 #include "imstkCamera.h"
 #include "imstkCollisionGraph.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/SPHFluid/SPHFluidExample.hpp b/Examples/SPHFluid/SPHFluidExample.hpp
index 3d42132967a91006aca270684a043b68f6951a5d..41dde2cf3ce630c538e6429a3b39a27284beac19 100644
--- a/Examples/SPHFluid/SPHFluidExample.hpp
+++ b/Examples/SPHFluid/SPHFluidExample.hpp
@@ -23,7 +23,7 @@
 #include "imstkCollisionDetection.h"
 #include "imstkCollisionGraph.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
 #include "imstkObjectInteractionFactory.h"
diff --git a/Examples/Screenshot/ScreenshotExample.cpp b/Examples/Screenshot/ScreenshotExample.cpp
index 7d5f00659ad6f0cbc7f04dbeca286453db64c41d..8de5a6d133731a857fb6506a39afac9fe63a346e 100644
--- a/Examples/Screenshot/ScreenshotExample.cpp
+++ b/Examples/Screenshot/ScreenshotExample.cpp
@@ -22,7 +22,9 @@
 #include "imstkCamera.h"
 #include "imstkKeyboardDeviceClient.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
+#include "imstkPointLight.h"
+#include "imstkSpotLight.h"
 #include "imstkLogger.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/Vessel/vesselExample.cpp b/Examples/Vessel/vesselExample.cpp
index 2ea57aebf3e2f30b6b34203f2641e3bb9289705d..b4835a69ce31f5ee3af793f6e7506c759009b45d 100644
--- a/Examples/Vessel/vesselExample.cpp
+++ b/Examples/Vessel/vesselExample.cpp
@@ -25,7 +25,7 @@
 #include "imstkImageData.h"
 #include "imstkImageDistanceTransform.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMeshIO.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
diff --git a/Examples/VirtualCoupling/VirtualCouplingExample.cpp b/Examples/VirtualCoupling/VirtualCouplingExample.cpp
index 2b72da632accffdc9bfe8a726d5a2b08ed873adb..2b467f86d1417254d3ee4f93b7fe694f483793ef 100644
--- a/Examples/VirtualCoupling/VirtualCouplingExample.cpp
+++ b/Examples/VirtualCoupling/VirtualCouplingExample.cpp
@@ -28,7 +28,7 @@
 #include "imstkHapticDeviceClient.h"
 #include "imstkHapticDeviceManager.h"
 #include "imstkKeyboardSceneControl.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
 #include "imstkMouseSceneControl.h"
 #include "imstkNew.h"
 #include "imstkPlane.h"
diff --git a/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp b/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp
index 01d19b585aedb7e276d63d8878220393be8bf2f9..8cc1c9b32fe4951b25935da49393004739482d70 100644
--- a/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp
+++ b/Source/Rendering/VTKRenderer/imstkVTKRenderer.cpp
@@ -22,7 +22,9 @@
 #include "imstkVTKRenderer.h"
 #include "imstkCamera.h"
 #include "imstkDebugRenderGeometry.h"
-#include "imstkLight.h"
+#include "imstkDirectionalLight.h"
+#include "imstkPointLight.h"
+#include "imstkSpotLight.h"
 #include "imstkLogger.h"
 #include "imstkScene.h"
 #include "imstkSceneObject.h"
diff --git a/Source/SceneEntities/Lights/imstkDirectionalLight.h b/Source/SceneEntities/Lights/imstkDirectionalLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..e88e12fa408ba2e3373493e9eb80f08b4f235f49
--- /dev/null
+++ b/Source/SceneEntities/Lights/imstkDirectionalLight.h
@@ -0,0 +1,54 @@
+/*=========================================================================
+
+   Library: iMSTK
+
+   Copyright (c) Kitware, Inc. & Center for Modeling, Simulation,
+   & Imaging in Medicine, Rensselaer Polytechnic Institute.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+=========================================================================*/
+
+#pragma once
+
+#include "imstkLight.h"
+
+namespace imstk
+{
+///
+/// \class DirectionalLight
+///
+/// \brief Directional light class
+///
+/// A directional light has no position or range. The focal point is the
+/// direction.
+///
+class DirectionalLight : public Light
+{
+public:
+    DirectionalLight(const std::string& name) : Light(name, LightType::Directional)
+    {
+        this->setFocalPoint(-1.0f, -1.0f, -1.0f);
+    }
+
+    virtual ~DirectionalLight() override = default;
+
+    virtual const std::string getTypeName() const { return "DirectionalLight"; }
+
+    ///
+    /// \brief Direction of the light
+    ///
+    void setDirection(const Vec3d& dir) { setFocalPoint(dir); }
+    void setDirection(const double x, const double y, const double z) { setFocalPoint(Vec3d(x, y, z)); }
+};
+} // imstk
\ No newline at end of file
diff --git a/Source/SceneEntities/Lights/imstkLight.h b/Source/SceneEntities/Lights/imstkLight.h
index 333df01c14bc24a8fae9537559737e3044466752..c111a4d41bf45c8d5a31f3256e7165fcedb97d93 100644
--- a/Source/SceneEntities/Lights/imstkLight.h
+++ b/Source/SceneEntities/Lights/imstkLight.h
@@ -129,131 +129,4 @@ protected:
     std::string m_name;
     LightType   m_type;
 };
-
-//-----------------------------------------------------------------------------
-
-///
-/// \class DirectionalLight
-///
-/// \brief Directional light class
-///
-/// A directional light has no position or range. The focal point is the
-/// direction.
-///
-class DirectionalLight : public Light
-{
-public:
-    DirectionalLight(const std::string& name) : Light(name, LightType::Directional)
-    {
-        this->setFocalPoint(-1.0f, -1.0f, -1.0f);
-    }
-
-    virtual ~DirectionalLight() override = default;
-
-public:
-    virtual const std::string getTypeName() const { return "DirectionalLight"; }
-
-    ///
-    /// \brief Direction of the light
-    ///
-    void setDirection(const Vec3d& dir) { setFocalPoint(dir); }
-    void setDirection(const double x, const double y, const double z) { setFocalPoint(Vec3d(x, y, z)); }
-
-protected:
-};
-
-//-----------------------------------------------------------------------------
-
-///
-/// \class PointLight
-///
-/// \brief Point light class
-///
-/// A point light has a position, and it's range is determined by it's
-/// intensity.
-///
-class PointLight : public Light
-{
-public:
-    ///
-    /// \brief Constructors
-    ///
-    PointLight(const std::string& name, const LightType& type = LightType::Point) : Light(name, type) { }
-
-    virtual ~PointLight() override = default;
-
-public:
-    virtual const std::string getTypeName() const { return "PointLight"; }
-
-    ///
-    /// \brief Get the cone angle
-    ///
-    const float getConeAngle() const { return m_coneAngle; }
-
-    ///
-    /// \brief Get the light position
-    ///
-    void setConeAngle(const double angle) { m_coneAngle = (float)angle; }
-
-    ///
-    /// \brief Get the light position
-    ///
-    const Vec3f getPosition() const { return m_position; }
-
-    ///
-    /// \brief Set the light position
-    ///
-    void setPosition(const Vec3d& p)
-    {
-        m_position = Vec3f(
-            static_cast<float>(p[0]),
-            static_cast<float>(p[1]),
-            static_cast<float>(p[2]));
-    };
-    void setPosition(const double& x, const double& y, const double& z)
-    {
-        this->setPosition(Vec3d(x, y, z));
-    }
-
-protected:
-    Vec3f m_position  = Vec3f(0.0f, 0.0f, 0.0f);
-    float m_coneAngle = 179.0f;
-};
-
-//-----------------------------------------------------------------------------
-
-///
-/// \class Spot light class
-///
-/// \brief A spot light is a point light in a cone shape.
-///
-class SpotLight : public PointLight
-{
-public:
-    ///
-    /// \brief Constructors
-    ///
-    SpotLight(const std::string& name) : PointLight(name, LightType::Spot)
-    {
-        m_coneAngle = 10.0f;
-    }
-
-    virtual ~SpotLight() override = default;
-
-public:
-    virtual const std::string getTypeName() const { return "SpotLight"; }
-
-    ///
-    /// \brief Get the spotlight angle in degrees
-    ///
-    float getSpotAngle() const { return m_spotAngle; }
-
-    ///
-    /// \brief Set the spotlight angle in degrees
-    ///
-    void setSpotAngle(const double& angle) { m_spotAngle = static_cast<float>(angle); }
-
-protected:
-    float m_spotAngle = 45.0f;
-};
 } // imstk
\ No newline at end of file
diff --git a/Source/SceneEntities/Lights/imstkPointLight.h b/Source/SceneEntities/Lights/imstkPointLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..a624d6eb95ab78a61b2f0a874fc88a3ee209bd2c
--- /dev/null
+++ b/Source/SceneEntities/Lights/imstkPointLight.h
@@ -0,0 +1,83 @@
+/*=========================================================================
+
+   Library: iMSTK
+
+   Copyright (c) Kitware, Inc. & Center for Modeling, Simulation,
+   & Imaging in Medicine, Rensselaer Polytechnic Institute.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+=========================================================================*/
+
+#pragma once
+
+#include "imstkLight.h"
+
+namespace imstk
+{
+///
+/// \class PointLight
+///
+/// \brief Point light class
+///
+/// A point light has a position, and it's range is determined by it's
+/// intensity.
+///
+class PointLight : public Light
+{
+public:
+    ///
+    /// \brief Constructors
+    ///
+    PointLight(const std::string& name, const LightType& type = LightType::Point) : Light(name, type) { }
+
+    virtual ~PointLight() override = default;
+
+public:
+    virtual const std::string getTypeName() const { return "PointLight"; }
+
+    ///
+    /// \brief Get the cone angle
+    ///
+    const float getConeAngle() const { return m_coneAngle; }
+
+    ///
+    /// \brief Get the light position
+    ///
+    void setConeAngle(const double angle) { m_coneAngle = (float)angle; }
+
+    ///
+    /// \brief Get the light position
+    ///
+    const Vec3f getPosition() const { return m_position; }
+
+    ///
+    /// \brief Set the light position
+    ///
+    void setPosition(const Vec3d& p)
+    {
+        m_position = Vec3f(
+            static_cast<float>(p[0]),
+            static_cast<float>(p[1]),
+            static_cast<float>(p[2]));
+    };
+    void setPosition(const double& x, const double& y, const double& z)
+    {
+        this->setPosition(Vec3d(x, y, z));
+    }
+
+protected:
+    Vec3f m_position  = Vec3f(0.0f, 0.0f, 0.0f);
+    float m_coneAngle = 179.0f;
+};
+} // imstk
\ No newline at end of file
diff --git a/Source/SceneEntities/Lights/imstkSpotLight.h b/Source/SceneEntities/Lights/imstkSpotLight.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d87aae425eede6a75b8b009dc33a227872071bc
--- /dev/null
+++ b/Source/SceneEntities/Lights/imstkSpotLight.h
@@ -0,0 +1,64 @@
+/*=========================================================================
+
+   Library: iMSTK
+
+   Copyright (c) Kitware, Inc. & Center for Modeling, Simulation,
+   & Imaging in Medicine, Rensselaer Polytechnic Institute.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+=========================================================================*/
+
+#pragma once
+
+#include "imstkPointLight.h"
+
+#include <string>
+
+namespace imstk
+{
+///
+/// \class Spot light class
+///
+/// \brief A spot light is a point light in a cone shape.
+///
+class SpotLight : public PointLight
+{
+public:
+    ///
+    /// \brief Constructors
+    ///
+    SpotLight(const std::string& name) : PointLight(name, LightType::Spot)
+    {
+        m_coneAngle = 10.0f;
+    }
+
+    virtual ~SpotLight() override = default;
+
+public:
+    virtual const std::string getTypeName() const { return "SpotLight"; }
+
+    ///
+    /// \brief Get the spotlight angle in degrees
+    ///
+    float getSpotAngle() const { return m_spotAngle; }
+
+    ///
+    /// \brief Set the spotlight angle in degrees
+    ///
+    void setSpotAngle(const double& angle) { m_spotAngle = static_cast<float>(angle); }
+
+protected:
+    float m_spotAngle = 45.0f;
+};
+} // imstk
\ No newline at end of file