diff --git a/Source/RWTHVRToolkit/Private/Interaction/Interactables/IntenSelect/IntenSelectable.cpp b/Source/RWTHVRToolkit/Private/Interaction/Interactables/IntenSelect/IntenSelectable.cpp
index 3cd0e3d97f05cd11f45f107103511fa3ec28c48a..9352bc3f8e0c1e734579c94bf7326175af7089f3 100644
--- a/Source/RWTHVRToolkit/Private/Interaction/Interactables/IntenSelect/IntenSelectable.cpp
+++ b/Source/RWTHVRToolkit/Private/Interaction/Interactables/IntenSelect/IntenSelectable.cpp
@@ -1,7 +1,6 @@
 // Fill out your copyright notice in the Description page of Project Settings.
 
 #include "Interaction/Interactables/IntenSelect/IntenSelectable.h"
-
 #include "Interaction/Interactables/IntenSelect/IntenSelectableScoring.h"
 #include "Interaction/Interactables/IntenSelect/IntenSelectableSinglePointScoring.h"
 #include "Kismet/KismetSystemLibrary.h"
@@ -16,8 +15,44 @@ TPair<FHitResult, float> UIntenSelectable::GetBestPointScorePair(const FVector&
 																 const float ConeAngle, const float LastValue,
 																 const float DeltaTime) const
 {
-	checkf(ScoringBehaviour, TEXT("%s"), *GetOwner()->GetName()) return ScoringBehaviour->GetBestPointScorePair(
-		ConeOrigin, ConeForwardDirection, ConeBackwardShiftDistance, ConeAngle, LastValue, DeltaTime);
+	checkf(ScoringBehaviours.Num() > 0, TEXT("%s"), *GetOwner()->GetName());
+
+	float MaxScore = -1;
+	FHitResult MaxResult;
+
+	for (UIntenSelectableScoring* s : ScoringBehaviours)
+	{
+		const TPair<FHitResult, float> Score_Pair = s->GetBestPointScorePair(
+			ConeOrigin, ConeForwardDirection, ConeBackwardShiftDistance, ConeAngle, LastValue, DeltaTime);
+
+		if (Score_Pair.Value >= MaxScore)
+		{
+			MaxResult = Score_Pair.Key;
+			MaxScore = Score_Pair.Value;
+		}
+	}
+	return TPair<FHitResult, float>{MaxResult, MaxScore};
+}
+
+void UIntenSelectable::BeginPlay()
+{
+	Super::BeginPlay();
+
+	TInlineComponentArray<UIntenSelectable*> AttachedIntenSelectables;
+	GetOwner()->GetComponents(AttachedIntenSelectables, false);
+
+	if (AttachedIntenSelectables.Num() > 1)
+	{
+		if (ScoringBehaviours.Num() == 0)
+		{
+			ShowErrorAndQuit(
+				"Please assign the Scoring Behaviour manually when using more than one IntenSelectable Component!");
+		}
+	}
+	else
+	{
+		InitDefaultBehaviourReferences();
+	}
 }
 
 void UIntenSelectable::HandleOnSelectStartEvents(const UIntenSelectComponent* IntenSelect, const FHitResult& HitResult)
@@ -58,18 +93,24 @@ void UIntenSelectable::HandleOnClickEndEvents(UIntenSelectComponent* IntenSelect
 void UIntenSelectable::InitDefaultBehaviourReferences()
 {
 	// Scoring
-	if (UIntenSelectableScoring* AttachedScoring =
-			Cast<UIntenSelectableScoring>(GetOwner()->GetComponentByClass(UIntenSelectableScoring::StaticClass())))
+
+	for (TSet<UActorComponent*> AllComponents = GetOwner()->GetComponents(); UActorComponent * c : AllComponents)
 	{
-		ScoringBehaviour = AttachedScoring;
+		if (UIntenSelectableScoring* TryToGetScoring = Cast<UIntenSelectableScoring>(c))
+		{
+			ScoringBehaviours.Add(TryToGetScoring);
+		}
 	}
-	else
+
+	if (ScoringBehaviours.Num() == 0)
 	{
-		ScoringBehaviour = NewObject<UIntenSelectableSinglePointScoring>(
+		const auto InitScoringBehaviour = NewObject<UIntenSelectableSinglePointScoring>(
 			this, UIntenSelectableSinglePointScoring::StaticClass(), "Default Scoring");
-		ScoringBehaviour->SetWorldLocation(GetOwner()->GetActorLocation());
-		ScoringBehaviour->AttachToComponent(GetOwner()->GetRootComponent(),
-											FAttachmentTransformRules::SnapToTargetNotIncludingScale);
+		InitScoringBehaviour->SetWorldLocation(GetOwner()->GetActorLocation());
+		InitScoringBehaviour->AttachToComponent(GetOwner()->GetRootComponent(),
+												FAttachmentTransformRules::SnapToTargetNotIncludingScale);
+
+		ScoringBehaviours.Add(InitScoringBehaviour);
 	}
 
 	// Selecting
@@ -93,24 +134,3 @@ void UIntenSelectable::ShowErrorAndQuit(const FString& Message) const
 #endif
 	UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit, false);
 }
-
-void UIntenSelectable::BeginPlay()
-{
-	Super::BeginPlay();
-
-	TInlineComponentArray<UIntenSelectable*> AttachedIntenSelectables;
-	GetOwner()->GetComponents(AttachedIntenSelectables, false);
-
-	if (AttachedIntenSelectables.Num() > 1)
-	{
-		if (!ScoringBehaviour)
-		{
-			ShowErrorAndQuit(
-				"Please assign the Scoring Behaviour manually when using more than one IntenSelectable Component!");
-		}
-	}
-	else
-	{
-		InitDefaultBehaviourReferences();
-	}
-}
diff --git a/Source/RWTHVRToolkit/Public/Interaction/Interactables/IntenSelect/IntenSelectable.h b/Source/RWTHVRToolkit/Public/Interaction/Interactables/IntenSelect/IntenSelectable.h
index ea8fccb95d7a1fad3a1a5e87ed78ea2a50c90861..45e6a7726227e26c299399ba733a143909ae32b7 100644
--- a/Source/RWTHVRToolkit/Public/Interaction/Interactables/IntenSelect/IntenSelectable.h
+++ b/Source/RWTHVRToolkit/Public/Interaction/Interactables/IntenSelect/IntenSelectable.h
@@ -5,6 +5,8 @@
 #include "CoreMinimal.h"
 #include "InputActionValue.h"
 #include "Components/ActorComponent.h"
+#include "Interaction/Interactables/ActionBehaviour.h"
+#include "Interaction/Interactables/HoverBehaviour.h"
 #include "IntenSelectable.generated.h"
 
 
@@ -23,7 +25,7 @@ public:
 	bool IsSelectable = true;
 
 	UPROPERTY(EditAnywhere, BlueprintReadWrite)
-	UIntenSelectableScoring* ScoringBehaviour;
+	TArray<UIntenSelectableScoring*> ScoringBehaviours;
 
 	UPROPERTY(EditAnywhere, BlueprintReadWrite)
 	TArray<UHoverBehaviour*> OnSelectBehaviours;