diff --git a/src/unit.cpp b/src/unit.cpp
index 83875bc55cbca0ce79909905891d1e0ada54fd5f..3a678b8c3c8e1cebd512144fcdc21b917364f935 100644
--- a/src/unit.cpp
+++ b/src/unit.cpp
@@ -1,5 +1,6 @@
 #include "unit.hpp"
 #include <tinyxml2.h>
+#include <iostream>
 
 namespace advanced_wars
 {
@@ -14,11 +15,6 @@ namespace advanced_wars
     {
         Spritesheet *spritesheet = engine.get_spritesheet();
 
-        while (engine.events not empty)
-        {
-            handle_event(events.pop_front());
-        }
-
         int step = engine.get_stage() % spritesheet->get_unit_textures()
                                             .at(static_cast<int>(faction))
                                             .at(static_cast<int>(id))
@@ -74,7 +70,10 @@ namespace advanced_wars
         }
     }
 
-    void Unit::attack(Unit &ally, Unit &enemy)
+    MatchupTabel damageMatrix;
+    std::vector<Unit*> units;
+
+    void Unit::attack(Unit *ally, Unit *enemy)
     {
 
         if (ally->has_attacked)
@@ -83,8 +82,8 @@ namespace advanced_wars
         }
 
         // Start Attack: choose the appropriate weapon:
-        int offDamage = damageMatrix[ally->id][enemy->id] * ((ally->health) / (ally->max_health));
-        int defDamage = damageMatrix[ally->id][enemy->id] * ((enemy->health) / (enemy->max_health));
+        int offDamage = damageMatrix[static_cast<u_int8_t>(ally->id)][static_cast<u_int8_t>(enemy->id)] * ((ally->health) / (ally->max_health));
+        int defDamage = damageMatrix[static_cast<u_int8_t>(ally->id)][static_cast<u_int8_t>(enemy->id)] * ((enemy->health) / (enemy->max_health));
 
         enemy->health = enemy->health - offDamage;
         if (enemy->health > 0)
@@ -107,11 +106,11 @@ namespace advanced_wars
         this->y = posY;
     }
 
-    void Unit::onClick(SDL_EVENT event)
+    void Unit::onClick(SDL_Event event)
     {
 
-        Unit & defender;
-        Unit & attacker;
+        Unit *defender = nullptr;
+        Unit *attacker = nullptr;
 
         switch (event.button.button)
         {
@@ -120,11 +119,11 @@ namespace advanced_wars
             // we have to re-initialize the unit.state (probably to idle)
             this->is_selected = true;
 
-            for (Unit &unit : units)
+            for (Unit *unit : units)
             {
                 if (inRange(unit))
                 {
-                    unit.state = UNAVAILABLE;
+                    unit->state = advanced_wars::UnitState::UNAVAILABLE;
                 };
             }
             break;
@@ -132,21 +131,21 @@ namespace advanced_wars
 
             this->is_targeted = true;
 
-            for (Unit &unit : units)
+            for (Unit *unit : units)
             {
-                if (unit.state = UNAVAILABLE)
+                if (unit->state == advanced_wars::UnitState::UNAVAILABLE)
                 {
                     continue;
                 }
 
-                if (unit.is_selected)
+                if (unit->is_selected)
                 {
-                    attacker = &unit;
+                    attacker = unit;
                 }
 
-                if (unit.is_targeted)
+                if (unit->is_targeted)
                 {
-                    defender = &unit;
+                    defender = unit;
                 }
             }
 
@@ -157,25 +156,25 @@ namespace advanced_wars
             }
             else
             {
-                stderr("Could not init the attack!");
+                std::cerr << "Fehler beim Laden der XML-Datei!" << std::endl;
                 break;
             }
         }
     }
 
-    bool Unit::inRange(Unit &enemy)
+    bool Unit::inRange(Unit *enemy)
     {
-        if (this->x == enemy.x)
+        if (this->x == enemy->x)
         {
-            return abs(this->y - enemy.y) <= this->range;
+            return abs(this->y - enemy->y) <= this->range;
         }
-        else if (this->y == enemy.y)
+        else if (this->y == enemy->y)
         {
-            return abs(this->x - enemy.x) <= this->range;
+            return abs(this->x - enemy->x) <= this->range;
         }
         return false;
     }
-
+    /*
     void Unit::loadXML(const char *filename)
     {
 
@@ -220,4 +219,5 @@ namespace advanced_wars
             unitElement = unitElement->NextSiblingElement("Unit");
         }
     }
+    */
 } // namespace advanced_wars
\ No newline at end of file
diff --git a/src/unit.hpp b/src/unit.hpp
index 87109406f2a334b15054abbf409ac2ca2868d65d..dfb5fc01e3d3b17727d8b82bdc741b9b29207123 100644
--- a/src/unit.hpp
+++ b/src/unit.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <unordered_map>
 #include "engine.hpp"
 #include "weapon.hpp"
 #include <optional>
@@ -72,7 +73,7 @@ public:
   If a unit is selected, it should call inRange on all other enemy units on the field
   */
 
- bool inRange(Unit &enemy);
+ bool inRange(Unit *enemy);
 
   /*
   The attacker will move towards the defender and thus initiate combat
@@ -81,7 +82,7 @@ public:
   Will Update the health for both units
   Attacker deals damage to the defender first
   */
-  void attack(Unit &ally ,Unit &enemy);
+  void attack(Unit *ally ,Unit *enemy);
 
 
   /*
@@ -108,7 +109,7 @@ void loadXML(const char* filename);
 This function will be called by an external event-handler, eventually.
 Currently, it should be called if a Unit is interacted with and the resulting SDL_EVENT is passed through, and then decided upon
 */
-void onClick(SDL_EVENT event);
+void onClick(SDL_Event event);
 
 private:
   int x;
@@ -131,9 +132,10 @@ private:
 
   // Primary weapon ammo
   int ammo;
-
+  /*
   std::optional<Weapon> primary;
   std::optional<Weapon> secondary;
+  */
 };
 
 } // namespace advanced_wars
\ No newline at end of file