diff --git a/Source/OptiX/Private/OptiXLaserActor.cpp b/Source/OptiX/Private/OptiXLaserActor.cpp
index 93b7d4b8211191b431731a72b4a36b99cf9e04a6..4780c719f8df313ecfdeddf77edf910289cef5e6 100644
--- a/Source/OptiX/Private/OptiXLaserActor.cpp
+++ b/Source/OptiX/Private/OptiXLaserActor.cpp
@@ -16,7 +16,7 @@ AOptiXLaserActor::AOptiXLaserActor(const FObjectInitializer& ObjectInitializer)
 {
 	UE_LOG(LogTemp, Display, TEXT("OptiX Laser Actor Constructor"));
 
-	PrimaryActorTick.bCanEverTick = false;
+	PrimaryActorTick.bCanEverTick = true;
 
 	static ConstructorHelpers::FObjectFinder<UStaticMesh>MeshAsset(TEXT("StaticMesh'/OptiX/Laser/laser3.laser3'"));
 	UStaticMesh* Asset = MeshAsset.Object;
@@ -95,25 +95,25 @@ void AOptiXLaserActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
 	UE_LOG(LogTemp, Warning, TEXT("OptiX Laser Actor EndPlay")); 
 }
 
-void AOptiXLaserActor::Tick(float DeltaTime)
-{
-	// We don't need to trace each tick, but only if either the optix scene changed, or the laser position moved. 
-	Super::Tick(DeltaTime);
-
-	//LineInstancedStaticMeshComponent->UpdateLines();
-
-	//if (bLaserTraceEnabled)
-	//{		
-	//	// Check if there's anything in the queue
-
-	//	if (!FOptiXModule::Get().GetOptiXContextManager()->LaserIntersectionQueue.IsEmpty())
-	//	{
-	//		DisplayLines();
-	//	}
-	//}
-
-
-}
+//void AOptiXLaserActor::Tick(float DeltaTime)
+//{
+//	// We don't need to trace each tick, but only if either the optix scene changed, or the laser position moved. 
+//	Super::Tick(DeltaTime);
+//
+//	//LineInstancedStaticMeshComponent->UpdateLines();
+//
+//	//if (bLaserTraceEnabled)
+//	//{		
+//	//	// Check if there's anything in the queue
+//
+//	//	if (!FOptiXModule::Get().GetOptiXContextManager()->LaserIntersectionQueue.IsEmpty())
+//	//	{
+//	//		DisplayLines();
+//	//	}
+//	//}
+//
+//
+//}
 
 //void AOptiXLaserActor::InitInstancedMeshData()
 //{
diff --git a/Source/OptiX/Public/OptiXContextManager.h b/Source/OptiX/Public/OptiXContextManager.h
index 2b0b241c8d3a57389be188b2f1e25a4493b7490c..5292332245a3c946876d7eb69ad1de5220021ab1 100644
--- a/Source/OptiX/Public/OptiXContextManager.h
+++ b/Source/OptiX/Public/OptiXContextManager.h
@@ -63,9 +63,12 @@ public:
 			cudaGraphicsUnregisterResource(CudaResourceDepthRight);
 			cudaGraphicsUnregisterResource(CudaResourceColorLeft);
 			cudaGraphicsUnregisterResource(CudaResourceColorRight);
+			cudaGraphicsUnregisterResource(CudaResourceIntersections);
+
 			PrintLastCudaError("cudaGraphicsUnregisterResource");
 			cudaFree(CudaLinearMemoryDepth);
 			cudaFree(CudaLinearMemoryColor);
+			cudaFree(CudaLinearMemoryIntersections);
 			PrintLastCudaError("cudaFree");
 		}
 
@@ -79,6 +82,16 @@ public:
 		ProgramToDeleteQueue.Empty();
 		TextureSamplersToDeleteQueue.Empty();
 		TransformsToDeleteQueue.Empty();
+
+		GroupChildrenToRemoveQueue.Empty();
+		GeometryGroupChildrenToRemoveQueue.Empty();
+
+		ComponentsToInitializeQueue.Empty();
+		ComponentsToUpdateQueue.Empty();
+		CubemapComponentsToUpdateQueue.Empty();
+
+		LaserActor.Reset();
+		CameraActor.Reset();
 	}
 
 	// ISceneViewExtension interface start, called by the render thread:
@@ -526,11 +539,16 @@ private:
 		DepthTexture.Reset();
 		OutputTexture2.Reset();
 		DepthTexture2.Reset();
+		LaserIntersectionTexture.Reset();
 
 		DynamicMaterial.Reset();
 		RegularMaterial.Reset();
 		VRMaterial.Reset();
+		LaserMaterial.Reset();
+
+		LaserMaterialDynamic.Reset();		
 
+		LaserActor.Reset();
 
 		TopObject.Reset();
 		TopAcceleration.Reset();
diff --git a/Source/OptiX/Public/OptiXLaserActor.h b/Source/OptiX/Public/OptiXLaserActor.h
index 152342803906d6a1074c9cf3adab658681dbb7b2..06902cd0c0c17154ac3029cff910f948501d7312 100644
--- a/Source/OptiX/Public/OptiXLaserActor.h
+++ b/Source/OptiX/Public/OptiXLaserActor.h
@@ -32,7 +32,7 @@ public:
 
 	virtual void BeginPlay() override;
 	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
-	virtual void Tick(float DeltaTime) override;
+	//virtual void Tick(float DeltaTime) override;
 
 	//UFUNCTION(BlueprintCallable, /*meta = (BlueprintProtected)*/ Category = "OptiXActor")
 	//void DisplayLines();