diff --git a/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset b/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset
index e45f66d97eecdaf0f9d573321f6a7653256fded7..1091bad9d3e7829dadd11289da3789a3e111d4bd 100644
Binary files a/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset and b/Content/Blueprints/OptiXObjects/OptiXLaserActor_Pickup.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset b/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset
index 087d6aa0cc6c31f009280e3454b95c1feec3bba8..d8dce25d511b009feffbaa44f3d71dcedab7da25 100644
Binary files a/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset and b/Content/Blueprints/OptiXObjects/OptiXLaserDetectorActor_Pickup.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset b/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset
index 6886e118de8fc72d3edb72fe899aa92bfc9e427d..32b38ab55ba46369aec475cded46c077bec1bb79 100644
Binary files a/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset and b/Content/Blueprints/OptiXObjects/SelectableLensBP.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset
index f3ca78d93bcc8307e67bb5cde205180d87b58d76..34445617130c0dd58f7b9f12b295235c66fe2de8 100644
Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset
index 8eaa66a6a20074b1a8a2ec8ebd032ebbd34a5560..db0631364bdd4392058272e6f832d696993eb426 100644
Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Black.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset
index b4ea154e5d7ffc921f7075026cd312141197e06e..dbca406026b8518f698a282c347f5883d3c13da9 100644
Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetBP_Circles.uasset differ
diff --git a/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset b/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset
index 461bf8f78591c505bec22f795b156c0155c3d38b..72aa22c365cea20d9c0e8a45e6596ecc555c8d12 100644
Binary files a/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset and b/Content/Blueprints/OptiXObjects/SelectableTargetPB_Grid.uasset differ
diff --git a/Content/Blueprints/TabletBP.uasset b/Content/Blueprints/TabletBP.uasset
index 0fc15a5876e1e790925519b63a51b856201762de..da7bc0365b0371302ad7bd1e0d74dacd784c10c2 100644
Binary files a/Content/Blueprints/TabletBP.uasset and b/Content/Blueprints/TabletBP.uasset differ
diff --git a/Source/OptiX/Private/OptiXLensComponent.cpp b/Source/OptiX/Private/OptiXLensComponent.cpp
index c63a042a0115b5c02e8ac15b9e42ed6e8cb747cd..7db0c253b0ce28b51d99e16a10e787a11b37f60d 100644
--- a/Source/OptiX/Private/OptiXLensComponent.cpp
+++ b/Source/OptiX/Private/OptiXLensComponent.cpp
@@ -28,6 +28,20 @@ UOptiXLensComponent::UOptiXLensComponent(const FObjectInitializer& ObjectInitial
 	
 }
 
+
+void UOptiXLensComponent::BeginPlay()
+{
+	Super::BeginPlay();
+
+
+	// do this on the game thread
+	// hook into WL update:
+	//UE_LOG(LogTemp, Display, TEXT("Begin Play on LensComponent, GameThread"));
+
+	FOptiXModule::Get().GetOptiXContextManager()->WavelengthChangedEvent.AddUFunction(this, "OnWavelengthChangedEvent");
+}
+
+
 void UOptiXLensComponent::UpdateOptiXComponentVariables()
 {
 	check(IsInRenderingThread());
@@ -153,9 +167,6 @@ void UOptiXLensComponent::InitOptiXGroups()
 
 	OptiXContext->GetGroup("top_object")->AddChild(OptiXTransform);
 	MarkDirty();
-
-	// hook into WL update:
-	FOptiXModule::Get().GetOptiXContextManager()->WavelengthChangedEvent.AddUFunction(this, "OnWavelengthChangedEvent");
 }
 
 void UOptiXLensComponent::InitCubemap(FRHICommandListImmediate & RHICmdList)
@@ -254,9 +265,9 @@ void UOptiXLensComponent::CleanOptiXComponent()
 
 void UOptiXLensComponent::InitFromData(const FLensData& Data)
 {
-	SetLensRadius(Data.LensRadius);
-	SetRadius1(Data.Radius1);
-	SetRadius2(Data.Radius2);
+	SetLensRadius(Data.LensRadius * 10);
+	SetRadius1(Data.Radius1 * 10);
+	SetRadius2(Data.Radius2 * 10);
 	SetThickness(Data.Thickness);
 	SetLensType1(Data.LensTypeSide1);
 	SetLensType2(Data.LensTypeSide2);
diff --git a/Source/OptiX/Private/SelectableActorBase.cpp b/Source/OptiX/Private/SelectableActorBase.cpp
index 8a84870ba5d566877056d2ad24b0f1d715178647..01b465f0d500d52bb660bec9ed3daa408896aea4 100644
--- a/Source/OptiX/Private/SelectableActorBase.cpp
+++ b/Source/OptiX/Private/SelectableActorBase.cpp
@@ -27,9 +27,6 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	Gizmo->SetupAttachment(GetStaticMeshComponent());
 	Gizmo->SetHiddenInGame(true);
 
-	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 0/4"));
-
-
 	SupportWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("SupportWidget"));
 	SupportWidget->SetupAttachment(Gizmo);
 	static ConstructorHelpers::FClassFinder<UUserWidget> SupportWidgetClass(TEXT("/OptiX/UI/SupportSwapWidget2"));
@@ -93,7 +90,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateY->SetupAttachment(TranslationSupport);
 	TranslateY->SetStaticMesh(TranslateXMesh.Object);
 	TranslateY->SetAbsolute(false, true, false);
-	TranslateY->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
+	TranslateY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
 	TranslateY->SetGenerateOverlapEvents(false);
 	TranslateY->SetHiddenInGame(true);
 	TranslateY->SetWorldRotation(FRotator(0.f, 90.0f, 0.0f));
@@ -106,7 +103,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ArrowY->SetupAttachment(TranslateY);
 	ArrowY->SetStaticMesh(TranslateArrow.Object);
 	//ArrowY->SetAbsolute(false, true, false);
-	//ArrowY->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
+	ArrowY->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
 	ArrowY->SetRelativeLocation(FVector(39, 0, 0));
 	ArrowY->SetGenerateOverlapEvents(false);
 	ArrowY->SetHiddenInGame(true);
@@ -131,7 +128,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateZ->SetupAttachment(TranslationSupport);
 	TranslateZ->SetStaticMesh(TranslateXMesh.Object);
 	TranslateZ->SetAbsolute(false, true, false);
-	TranslateZ->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
+	TranslateZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
 	TranslateZ->SetGenerateOverlapEvents(false);
 	TranslateZ->SetHiddenInGame(true);
 	TranslateZ->SetWorldRotation(FRotator(90.f, 0.0f, 0.0f));
@@ -143,7 +140,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ArrowZ->SetupAttachment(TranslateZ);
 	ArrowZ->SetStaticMesh(TranslateArrow.Object);
 	//ArrowZ->SetAbsolute(false, true, false);
-	//ArrowZ->SetWorldScale3D(FVector(0.8f, 0.8f, 0.8f));
+	ArrowZ->SetWorldScale3D(FVector(0.6f, 0.6f, 0.6f));
 	ArrowZ->SetRelativeLocation(FVector(39, 0, 0));
 	ArrowZ->SetGenerateOverlapEvents(false);
 	ArrowZ->SetHiddenInGame(true);
@@ -201,7 +198,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'"));
 	SupportH->SetStaticMesh(SupportMesh.Object);
 	SupportH->SetWorldRotation(FRotator(-90, 0, 0));
-	SupportH->SetWorldScale3D(FVector(1, 1, 0.5));
+	SupportH->SetWorldScale3D(FVector(0.6, 0.6, 0.3));
 	SupportH->SetGenerateOverlapEvents(false);
 	SupportH->SetHiddenInGame(true);
 	//SupportH->SetWorldLocation(FVector(25, 0, 0));
@@ -214,7 +211,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/SelectorSphere.SelectorSphere'"));
 	SupportSphereH->SetStaticMesh(SupportSphereMesh.Object);
 	SupportSphereH->SetAbsolute(false, false, true);
-	SupportSphereH->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
+	SupportSphereH->SetWorldScale3D(FVector(0.03, 0.03, 0.03));
 	SupportSphereH->SetGenerateOverlapEvents(false);
 	SupportSphereH->SetHiddenInGame(true);
 	SupportSphereH->SetRelativeLocation(FVector(0, 0, 100));
@@ -237,7 +234,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportV->SetupAttachment(RotationSupport);
 	SupportV->SetStaticMesh(SupportMesh.Object);
 	SupportV->SetWorldRotation(FRotator(0.0f, 0.0f, 90.0f));
-	SupportV->SetWorldScale3D(FVector(1, 1, 0.5));
+	SupportV->SetWorldScale3D(FVector(0.6, 0.6, 0.3));
 	SupportV->SetGenerateOverlapEvents(false);
 	SupportV->SetHiddenInGame(true);
 	//SupportV->SetWorldLocation(FVector(0, 25, 0));
@@ -250,7 +247,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	//static ConstructorHelpers::FObjectFinder<UStaticMesh> SupportSphereMesh(TEXT("StaticMesh'/OptiX/UI/Rotator/Sphere_2.Sphere_2'"));
 	SupportSphereV->SetStaticMesh(SupportSphereMesh.Object);
 	SupportSphereV->SetAbsolute(false, false, true);
-	SupportSphereV->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
+	SupportSphereV->SetWorldScale3D(FVector(0.03, 0.03, 0.03));
 	SupportSphereV->SetGenerateOverlapEvents(false);
 	SupportSphereV->SetHiddenInGame(true);
 	SupportSphereV->SetRelativeLocation(FVector(0, 0, 100));
@@ -269,19 +266,34 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	//DegreeWidgetV->SetTwoSided(true);
 
 	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 3/4"));
+	   	 
 
-
-	// Rods
+	// Rods	   	 
 
 	static ConstructorHelpers::FObjectFinder<UMaterial> MetalMaterial(TEXT("Material'/OptiX/Laser/MetalSilver.MetalSilver'"));
+	static ConstructorHelpers::FObjectFinder<UStaticMesh> SphereMesh(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'"));
+	static ConstructorHelpers::FObjectFinder<UStaticMesh> Cylinder2(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'"));
+
+	Socket = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SocketNew"));
+	Socket->SetAbsolute(false, false, true);
+
+	Socket->SetupAttachment(GetStaticMeshComponent());
+	Socket->SetStaticMesh(SphereMesh.Object);
+	Socket->SetGenerateOverlapEvents(false);
+	Socket->SetMaterial(0, MetalMaterial.Object);
+	Socket->SetCollisionEnabled(ECollisionEnabled::NoCollision);
+	Socket->SetWorldScale3D(FVector(0.03, 0.03, 0.03));
+	//Socket->SetRelativeLocation(FVector(0, 0, 0));
+	Socket->SetCanEverAffectNavigation(false);
+	Socket->CastShadow = 0;
+	Socket->bVisibleInReflectionCaptures = false;
 
 	ConnectorV = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ConnectorVNew"));
 	ConnectorV->SetAbsolute(false, true, true);
 
-	ConnectorV->SetupAttachment(GetStaticMeshComponent());
-	static ConstructorHelpers::FObjectFinder<UStaticMesh> Cylinder2(TEXT("StaticMesh'/OptiX/UI/Rotator/Cylinder_2.Cylinder_2'"));
+	ConnectorV->SetupAttachment(Socket);
 	ConnectorV->SetStaticMesh(Cylinder2.Object);
-	ConnectorV->SetWorldScale3D(FVector(1, 1, -1));
+	ConnectorV->SetWorldScale3D(FVector(0.5, 0.5, -1));
 	ConnectorV->SetGenerateOverlapEvents(false);
 	ConnectorV->SetCollisionEnabled(ECollisionEnabled::NoCollision);
 	ConnectorV->SetMaterial(0, MetalMaterial.Object);
@@ -294,12 +306,11 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	Sphere->SetAbsolute(false, false, true);
 
 	Sphere->SetupAttachment(ConnectorV);
-	static ConstructorHelpers::FObjectFinder<UStaticMesh> SphereMesh(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'"));
 	Sphere->SetStaticMesh(SphereMesh.Object);
 	Sphere->SetGenerateOverlapEvents(false);
 	Sphere->SetMaterial(0, MetalMaterial.Object);
 	Sphere->SetCollisionEnabled(ECollisionEnabled::NoCollision);
-	Sphere->SetWorldScale3D(FVector(0.05, 0.05, 0.05));
+	Sphere->SetWorldScale3D(FVector(0.03, 0.03, 0.03));
 	Sphere->SetRelativeLocation(FVector(0, 0, 100));
 	Sphere->SetCanEverAffectNavigation(false);
 	Sphere->CastShadow = 0;
@@ -311,6 +322,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ConnectorH->SetStaticMesh(Cylinder2.Object);
 	ConnectorH->SetGenerateOverlapEvents(false);	
 	ConnectorH->SetRelativeLocation(FVector(0, 0, 100));
+	ConnectorH->SetWorldScale3D(FVector(0.5, 0.5, 1.0));
 	ConnectorH->SetMaterial(0, MetalMaterial.Object);
 	ConnectorH->SetMaterial(1, MetalMaterial.Object);
 	ConnectorH->SetGenerateOverlapEvents(false);
@@ -464,7 +476,16 @@ void ASelectableActorBase::DeleteActor()
 
 void ASelectableActorBase::SetRodPosition(FVector TablePosition)
 {
-	FVector TableZero = TablePosition + FVector(0, 0, 98); // Table Height	
+	FVector TableZero = TablePosition + FVector(0, 0, 95); // Table Height	
+
+	// Far away from the table or below table, make it go straight down
+	if ( (Socket->GetComponentLocation().Z <= TableZero.Z) || (Socket->GetComponentLocation() - TableZero).Size() > 200) 
+	{
+		ConnectorH->SetWorldScale3D(FVector(0, 0, 0));
+		ConnectorV->SetWorldScale3D(FVector(1, 1, -10));
+		return;
+	}
+
 
 	float ScaleFactorV = FMath::Abs(ConnectorV->GetComponentLocation().Z - TableZero.Z) / 100.0f;
 	ConnectorV->SetWorldScale3D(FVector(1, 1, -ScaleFactorV));
@@ -475,11 +496,6 @@ void ASelectableActorBase::SetRodPosition(FVector TablePosition)
 
 	ConnectorH->SetWorldRotation(FRotationMatrix::MakeFromZ(DistanceToSphere).Rotator());
 
-	if ((ConnectorV->GetComponentLocation() - TableZero).Size() > 200) // Far away from the table, make it go straight down
-	{
-		ConnectorH->SetWorldScale3D(FVector(0, 0, 0));
-		ConnectorV->SetWorldScale3D(FVector(1, 1, -10));
-	}
 }
 
 // TODO Material highlighting - swap material slots?
diff --git a/Source/OptiX/Public/OptiXLensComponent.h b/Source/OptiX/Public/OptiXLensComponent.h
index 956f68e492bb1486bdcb3135b8c66b8534f996d4..b6953a3755e871fe5d1ff673f85a0f82f0c882bf 100644
--- a/Source/OptiX/Public/OptiXLensComponent.h
+++ b/Source/OptiX/Public/OptiXLensComponent.h
@@ -39,6 +39,8 @@ public:
 
 	UOptiXLensComponent(const FObjectInitializer& ObjectInitializer);
 
+	virtual void BeginPlay() override;
+
 	// UOptiXObjectComponent Interface Start
 
 	virtual void UpdateOptiXComponentVariables() override;
diff --git a/Source/OptiX/Public/SelectableActorBase.h b/Source/OptiX/Public/SelectableActorBase.h
index 90bb3f830b2011b758baa6ab4015651402676361..682cd71eb4b9d2195cf98219fad58bbd21059442 100644
--- a/Source/OptiX/Public/SelectableActorBase.h
+++ b/Source/OptiX/Public/SelectableActorBase.h
@@ -138,4 +138,7 @@ public:
 
 	UPROPERTY(BlueprintReadWrite, EditAnywhere)
 	UStaticMeshComponent* Sphere;
+
+	UPROPERTY(BlueprintReadWrite, EditAnywhere)
+	UStaticMeshComponent* Socket;
 };