diff --git a/README.md b/README.md
index 5bf9cb5d5ba5063753341a7f47a37c0853287d34..04552d2fc64b72f062ac763a4c1685cd825e3506 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,7 @@ The **RWTH VR Toolkit** contains a collection of extensions which are used in ma
 The contents of this plugin are constantly extended and improved to reflect changes in the Unreal nDisplay Plugin that we use to support our aixCAVE with Unreal.
 
 [Check out the repository's wiki page for installation, usage and documentation](https://git-ce.rwth-aachen.de/vr-vis/VR-Group/unreal-development/plugins/rwth-vr-toolkit/-/wikis/home).
+
+## Citation
+
+If you need to reference the toolkit in your scientific work, please use https://zenodo.org/records/10817754
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;