diff --git a/Assets/_Scripts/Config/GameConfig.cs b/Assets/_Scripts/Config/GameConfig.cs
index f02be23dbaa978c836bdc50e4460f0770acfb581..b7941cc8c4041afaee947df5ab2bf502f9184aae 100644
--- a/Assets/_Scripts/Config/GameConfig.cs
+++ b/Assets/_Scripts/Config/GameConfig.cs
@@ -14,24 +14,24 @@ public static class GameConfig
     // Difficulty multipliers
     private static readonly DifficultyData EasyData = new()
     {
-        EnemyDamageMultiplier = 0.5f,
-        EnemyHealthMultiplier = 0.5f,
-        PlayerDamageMultiplier = 2f,
-        PlayerHealthMultiplier = 2f,
+        enemyDamageMultiplier = 0.5f,
+        enemyHealthMultiplier = 0.5f,
+        playerDamageMultiplier = 2f,
+        playerHealthMultiplier = 2f,
     };
     private static readonly DifficultyData MediumData = new()
     {
-        EnemyDamageMultiplier = 0.5f,
-        EnemyHealthMultiplier = 0.5f,
-        PlayerDamageMultiplier = 2f,
-        PlayerHealthMultiplier = 2f,
+        enemyDamageMultiplier = 0.5f,
+        enemyHealthMultiplier = 0.5f,
+        playerDamageMultiplier = 2f,
+        playerHealthMultiplier = 2f,
     };
     private static readonly DifficultyData HardData = new()
     {
-        EnemyDamageMultiplier = 2f,
-        EnemyHealthMultiplier = 2f,
-        PlayerDamageMultiplier = 0.5f,
-        PlayerHealthMultiplier = 0.5f,
+        enemyDamageMultiplier = 2f,
+        enemyHealthMultiplier = 2f,
+        playerDamageMultiplier = 0.5f,
+        playerHealthMultiplier = 0.5f,
     };
 
     public static readonly Dictionary<DifficultyType, DifficultyData> DIFFICULTY_MODIFIERS = new()
diff --git a/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs b/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs
index 9554a3f7c0c2f95c0e0ac6a501e4d0dfc131ee88..5aec3ba4c01d6b3406aa5f36e23ae0855231b2e8 100644
--- a/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs
+++ b/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs
@@ -5,8 +5,21 @@ public abstract class BossEntity : EnemyEntity, IAccompaniable
 {
     // Attributes
     private readonly List<Companion> companionList = new();    
+    private readonly List<bool> Activecompanions = new();    
 
     // Set-Getters
+    public List<bool> ActiveCompanions => ActiveCompanions;
     public List<Companion> Companions => companionList;
     public MonoBehaviour CompanionController => this;
+
+    // Functions
+    public void ActivateCompanion(int index)
+    {
+        throw new System.NotImplementedException();
+    }
+
+    public void DeactivateCompanion(int index)
+    {
+        throw new System.NotImplementedException();
+    }
 }
diff --git a/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs b/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs
index 9ffb4e1555035ddbb8120c4e32441c92966e7170..f35a0ec5b5c19fc6bd9d143b42231a59260546fa 100644
--- a/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs
+++ b/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs
@@ -2,14 +2,14 @@ public abstract class EnemyEntity : CombatantEntity
 {
     // Set-Getters
     public new string AttackLayerCode => EnvironmentConfig.LAYER_ENEMY_ATTACK;
-    public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyDamageMultiplier;
+    public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyDamageMultiplier;
 
     // Functions
     new protected void Start()
     {
         base.Start();
-        Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyHealthMultiplier;
-        BaseDamage *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyDamageMultiplier;
+        Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyHealthMultiplier;
+        BaseDamage *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyDamageMultiplier;
         tag = EnvironmentConfig.TAG_ENEMY;
     }
 }
diff --git a/Assets/_Scripts/Core/Entities/Pets/Companion.cs b/Assets/_Scripts/Core/Entities/Pets/Companion.cs
index aa820e9ffc7bb41fa7a66d30f16787ee843e22cb..00ab24893711e8c6f9ce25603b8277e9622e8d3c 100644
--- a/Assets/_Scripts/Core/Entities/Pets/Companion.cs
+++ b/Assets/_Scripts/Core/Entities/Pets/Companion.cs
@@ -3,6 +3,9 @@ using UnityEngine;
 
 public abstract class Companion : DamageableEntity 
 {
+    // Attributes
+    public CompanionData data;
+
     // Getter-Setter
     public IAccompaniable Owner {get; set;}
 
diff --git a/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs b/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs
index 46562480b7c3ba54ed69255504b2536597d3fba8..8bed7c9e627fe966275ed66165d109f1d4f1e9a0 100644
--- a/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs
+++ b/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs
@@ -6,7 +6,6 @@ public abstract class WeaponObject : MonoBehaviour
 {
 
     // Attributes
-    public string prefabPath;
     public WeaponData data;
     protected IArmed bearer;
     private bool canAttack = true;
diff --git a/Assets/_Scripts/Core/Player/Player.cs b/Assets/_Scripts/Core/Player/Player.cs
index 89d543c1c1d10bdc7a90bf3e7b21b02d19833231..aacf5dd078e24d319bc7fd727ab9b9ed122e9131 100644
--- a/Assets/_Scripts/Core/Player/Player.cs
+++ b/Assets/_Scripts/Core/Player/Player.cs
@@ -17,14 +17,14 @@ public class Player : PlayerEntity
 
     // Set-Getters
     public new string AttackLayerCode => EnvironmentConfig.LAYER_PLAYER;
-    public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].PlayerDamageMultiplier;
+    public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].playerDamageMultiplier;
 
     // Constructor
     new void Start()
     {
         base.Start();
         SetIdPrefix(ObjectIdPrefix);
-        Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].PlayerHealthMultiplier;
+        Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].playerHealthMultiplier;
         stateController = new PlayerStateController(this);
         inputController = new PlayerInputController(this);
         movementController = new PlayerMovementController(this);
diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
index 7003088288598bd2a1957e820beaae5c7359921f..5e16f79f60aee40e95680d7573c7fca494640728 100644
--- a/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
+++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
@@ -52,9 +52,9 @@ public class CombatantEntity : DamageableEntity, IArmed
         UnequipWeapon();
 
         WeaponIndex = index;
-        WeaponObject blueprint = WeaponList[WeaponIndex];
+        WeaponObject selectedWeapon = WeaponList[WeaponIndex];
         WeaponObject weaponObject = ObjectFactory.CreateObject<WeaponObject>(
-            prefabPath: blueprint == null? NoWeapon.weaponPrefab : blueprint.prefabPath,
+            prefabPath: selectedWeapon == null? NoWeapon.weaponPrefab : selectedWeapon.data.prefabPath,
             parent: transform, 
             objectName: EnvironmentConfig.OBJECT_WEAPON
         );
diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
index b006629a63f2c4b229847fad2ae4042c1d975b18..68b2f0b3453d8d5e53fbd869c132eee34af3dbe6 100644
--- a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
+++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs
@@ -5,8 +5,22 @@ public class PlayerEntity : CombatantEntity, IAccompaniable
 {
     // Attributes
     public List<Companion> companionList = new();    
+    public List<bool> activeCompanions = new();    
     
     // Set-Getters
     public List<Companion> Companions => companionList;
+    public List<bool> ActiveCompanions => activeCompanions;
     public MonoBehaviour CompanionController => this;
+
+    // Functions
+    public void ActivateCompanion(int index)
+    {
+        throw new System.NotImplementedException();
+    }
+
+    public void DeactivateCompanion(int index)
+    {
+        throw new System.NotImplementedException();
+    }
+
 }
diff --git a/Assets/_Scripts/Library/DataTypes/CompanionData.cs b/Assets/_Scripts/Library/DataTypes/CompanionData.cs
index f8ae9dc72790578c30ec82d64667ee1d7997b3ab..5bfb22e78076912a7f9445e2d1717e00dc367525 100644
--- a/Assets/_Scripts/Library/DataTypes/CompanionData.cs
+++ b/Assets/_Scripts/Library/DataTypes/CompanionData.cs
@@ -4,4 +4,9 @@ using UnityEngine;
 [CreateAssetMenu(fileName = "NewCompanionData", menuName = "Data/Entity/Companion Data")]
 public class CompanionData : ScriptableObject
 {
+    // Note: prefab system is not quite extendable
+    // Learn other systems than this obviously
+    // but I think the window to learn and implement a new system is not viable within the scope of the project
+    public string prefabPath;
+    public GameObject model;
 }
\ No newline at end of file
diff --git a/Assets/_Scripts/Library/DataTypes/DifficultyData.cs b/Assets/_Scripts/Library/DataTypes/DifficultyData.cs
index a8cc3c72c085efa4e669817b2f1c80d620950780..59859f948c033086060162b25ad28c131a6a9a85 100644
--- a/Assets/_Scripts/Library/DataTypes/DifficultyData.cs
+++ b/Assets/_Scripts/Library/DataTypes/DifficultyData.cs
@@ -1,9 +1,7 @@
-using UnityEngine;
-
-public class DifficultyData : ScriptableObject
+public class DifficultyData
 {
-    public float EnemyHealthMultiplier { get; set; }
-    public float EnemyDamageMultiplier { get; set; }
-    public float PlayerHealthMultiplier { get; set; }
-    public float PlayerDamageMultiplier { get; set; }
+    public float enemyHealthMultiplier;
+    public float enemyDamageMultiplier;
+    public float playerHealthMultiplier;
+    public float playerDamageMultiplier;
 }
diff --git a/Assets/_Scripts/Library/DataTypes/ProjectileData.cs b/Assets/_Scripts/Library/DataTypes/ProjectileData.cs
index 556b46f607afcd45405c1be4494f1314bd5992d1..9215a8452d9773ea2fe6b4a84203e79933f9ba99 100644
--- a/Assets/_Scripts/Library/DataTypes/ProjectileData.cs
+++ b/Assets/_Scripts/Library/DataTypes/ProjectileData.cs
@@ -4,8 +4,8 @@ using UnityEngine;
 [CreateAssetMenu(fileName = "NewProjectileData", menuName = "Data/Weapon/Projectile Data")]
 public class ProjectileData : ScriptableObject
 {
+    public GameObject model;
     public float speed;
     public float travelDistance;
     public bool through;
-    public GameObject model;
 }
\ No newline at end of file
diff --git a/Assets/_Scripts/Library/DataTypes/WeaponData.cs b/Assets/_Scripts/Library/DataTypes/WeaponData.cs
index b80311578336ad3aa59da593325bbc75c9600fea..3a1f31fb51b89f17ead274a7ecc5b1f01e90c08f 100644
--- a/Assets/_Scripts/Library/DataTypes/WeaponData.cs
+++ b/Assets/_Scripts/Library/DataTypes/WeaponData.cs
@@ -4,9 +4,13 @@ using UnityEngine;
 [CreateAssetMenu(fileName = "NewWeaponData", menuName = "Data/Weapon/Weapon Data")]
 public class WeaponData : ScriptableObject
 {
+    // Note: prefab system is not quite extendable
+    // Learn other systems than this obviously
+    // but I think the window to learn and implement a new system is not viable within the scope of the project
+    public string prefabPath;
+    public GameObject model;
     public float baseDamage;
     public float knockbackPower;
     public float attackInterval;
     public float alternateAttackInterval;
-    public GameObject model;
 }
\ No newline at end of file
diff --git a/Assets/_Scripts/Library/Interfaces/IAccompanied.cs b/Assets/_Scripts/Library/Interfaces/IAccompanied.cs
index 0c46aa5b33cfa8f51f39d642e97d00bb14370689..ec66b003b0f6df18d7ae94ec65ea35c026904358 100644
--- a/Assets/_Scripts/Library/Interfaces/IAccompanied.cs
+++ b/Assets/_Scripts/Library/Interfaces/IAccompanied.cs
@@ -5,5 +5,8 @@ public interface IAccompaniable
 {
     // Set-Getters
     public List<Companion> Companions { get; }
+    public List<bool> ActiveCompanions { get; }
     public MonoBehaviour CompanionController { get; }
+    public void ActivateCompanion(int index);
+    public void DeactivateCompanion(int index);
 }