diff --git a/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset b/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset
index 543ecd1eb24c46664858100e7e4c779c09044e6e..d37d2415028b05b115ea4d76f6804914868a3096 100644
Binary files a/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset and b/Content/Blueprints/OptiXVRPawnStandaloneBP.uasset differ
diff --git a/Content/Blueprints/TabletBP.uasset b/Content/Blueprints/TabletBP.uasset
index 279e6d81f4934b0826f6229755ea4b16b9e47154..0fc15a5876e1e790925519b63a51b856201762de 100644
Binary files a/Content/Blueprints/TabletBP.uasset and b/Content/Blueprints/TabletBP.uasset differ
diff --git a/Content/Blueprints/ThumbstickOverlayTypes.uasset b/Content/Blueprints/ThumbstickOverlayTypes.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..cda0110f3dbb4376436e3e3d8cc000d64aa5f0f4
Binary files /dev/null and b/Content/Blueprints/ThumbstickOverlayTypes.uasset differ
diff --git a/Content/Laser/NewTextureRenderTarget2D.uasset b/Content/Laser/NewTextureRenderTarget2D.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..f09d76a26b068a33c9c583e837d9d16f24b910e5
Binary files /dev/null and b/Content/Laser/NewTextureRenderTarget2D.uasset differ
diff --git a/Content/UI/SupportSwapWidget2.uasset b/Content/UI/SupportSwapWidget2.uasset
index 6264ba03a515f5a3513360ea0aafbc0400a1ab8a..208fb5a1146c4682f3a0738a29a497170e8e3996 100644
Binary files a/Content/UI/SupportSwapWidget2.uasset and b/Content/UI/SupportSwapWidget2.uasset differ
diff --git a/Content/UI/ThumbstickMode.uasset b/Content/UI/ThumbstickMode.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..50fa12f721345f9f364efcd84c43f0635dc9044a
Binary files /dev/null and b/Content/UI/ThumbstickMode.uasset differ
diff --git a/Source/OptiX/Private/SelectableActorBase.cpp b/Source/OptiX/Private/SelectableActorBase.cpp
index 317e78746b1d05a03d2d89c68c4526da8f9b25ab..00d91345ab26139ca0efb225123fb6284623529a 100644
--- a/Source/OptiX/Private/SelectableActorBase.cpp
+++ b/Source/OptiX/Private/SelectableActorBase.cpp
@@ -11,18 +11,23 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	: Super(ObjectInitializer)
 {
 
-	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor"));
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor Start"));
 
 	SetMobility(EComponentMobility::Movable);
 
 	GetStaticMeshComponent()->SetGenerateOverlapEvents(true);
 	GetStaticMeshComponent()->CastShadow = 0;
 
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor Component Setup Start"));
+
 
 	Gizmo = CreateDefaultSubobject<USceneComponent>(TEXT("Gizmo"));
 	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"));
@@ -32,6 +37,10 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	SupportWidget->SetDrawSize(FVector2D(800, 2300));
 	SupportWidget->SetGenerateOverlapEvents(false);
 	SupportWidget->SetHiddenInGame(true);
+	//SupportWidget->SetTwoSided(true);
+
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 1/4"));
+
 
 	TranslationSupport = CreateDefaultSubobject<USceneComponent>(TEXT("TranslationSupport"));
 	TranslationSupport->SetupAttachment(Gizmo);
@@ -75,7 +84,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateWidgetX->SetDrawSize(FVector2D(300, 300));
 	TranslateWidgetX->SetHiddenInGame(true);
 	TranslateWidgetX->SetGenerateOverlapEvents(false);
-
+	//TranslateWidgetX->SetTwoSided(true);
 	// todo
 
 	TranslateY = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateY"));
@@ -114,7 +123,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateWidgetY->SetDrawSize(FVector2D(300, 300));
 	TranslateWidgetY->SetHiddenInGame(true);
 	TranslateWidgetY->SetGenerateOverlapEvents(false);
-
+	//TranslateWidgetY->SetTwoSided(true);
 
 	TranslateZ = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TranslateZ"));
 	TranslateZ->SetupAttachment(TranslationSupport);
@@ -143,6 +152,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 
 	TranslateWidgetZ = CreateDefaultSubobject<UWidgetComponent>(TEXT("TranslateWidgetZ"));
 	TranslateWidgetZ->SetAbsolute(false, true, true);
+	//TranslateWidgetZ->SetTwoSided(true);
 
 	TranslateWidgetZ->SetupAttachment(ArrowZ);
 	TranslateWidgetZ->SetWidgetClass(PosWidgetClass.Class);
@@ -154,6 +164,8 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	TranslateWidgetZ->SetHiddenInGame(true);
 	TranslateWidgetZ->SetGenerateOverlapEvents(false);
 
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 2/4"));
+
 
 	RotationSupport = CreateDefaultSubobject<USceneComponent>(TEXT("RotationSupport"));
 	RotationSupport->SetupAttachment(Gizmo);
@@ -217,6 +229,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	DegreeWidgetH->SetDrawSize(FVector2D(200, 300));
 	DegreeWidgetH->SetHiddenInGame(true);
 	DegreeWidgetH->SetGenerateOverlapEvents(false);
+	//DegreeWidgetH->SetTwoSided(true);
 
 	SupportV = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SupportV"));
 	SupportV->SetupAttachment(RotationSupport);
@@ -251,6 +264,10 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	DegreeWidgetV->SetDrawSize(FVector2D(200, 300));
 	DegreeWidgetV->SetHiddenInGame(true);
 	DegreeWidgetV->SetGenerateOverlapEvents(false);
+	//DegreeWidgetV->SetTwoSided(true);
+
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor 3/4"));
+
 
 	// Rods
 
@@ -300,7 +317,7 @@ ASelectableActorBase::ASelectableActorBase(const FObjectInitializer& ObjectIniti
 	ConnectorH->CastShadow = 0;
 	ConnectorH->bVisibleInReflectionCaptures = false;
 
-	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor End"));
+	UE_LOG(LogTemp, Display, TEXT("OptiX ASelectableActorBase Constructor End 4/4"));
 
 
 }