diff --git a/Level.cpp b/Level.cpp
index 6a4d9fc477144028a60a0e94eede391549c34142..78f62e6003ca24d1da376fb58a76d97fa53a7f68 100644
--- a/Level.cpp
+++ b/Level.cpp
@@ -1,3 +1,4 @@
+#include <algorithm>
 #include "Level.hpp"
 #include "player.hpp"
 #include "Enemyprojectile.hpp"
@@ -36,6 +37,11 @@ void Wall::setWallColor(Color color)
     this->wallColor = color;
 }
 
+Orientation Wall::getOrientation() const
+{
+    return this->wallOrientation;
+}
+
 // Scenery stuff --------------------------------------------------------------------------
 
 Scenery::Scenery(Position const &pos, SceneryType type)
@@ -78,14 +84,27 @@ Level::Level(int width, int heigth, Player &player) :
     borders.push_back(Wall(heigth, thickness, { static_cast<float>(width - thickness), 0.0f }, Orientation::Vertical));
 }
 
-void Level::addWall(int length, int thickness, float posX, float posY, Orientation orientation)
+void Level::addWall(int length, int thickness, Position const &topleft, Orientation orientation)
 {
-    wallVector.emplace_back(Wall{ length, thickness, { posX, posY }, orientation });
+     if(std::none_of(
+        wallVector.begin(), wallVector.end(), [&](Wall const &i) {
+            return (
+                (i.getTopLeft() == topleft) &&
+                (orientation == i.getOrientation())
+            );
+    })) {
+        wallVector.emplace_back(Wall{ length, thickness, topleft, orientation });
+    }
 }
 
-void Level::addScenery(float posX, float posY, SceneryType type)
+void Level::addScenery(Position const &topleft, SceneryType type)
 {
-    sceneryVector.emplace_back(Scenery{ { posX, posY }, type });
+    if(std::none_of(
+        sceneryVector.begin(), sceneryVector.end(), [&](Scenery const &i) {
+            return (i.getTopLeft() == topleft);
+    })) {
+        sceneryVector.emplace_back(Scenery{ topleft, type });
+    }
 }
 
 void Level::addEnemy(std::unique_ptr<Enemy> enemy_)
diff --git a/Level.hpp b/Level.hpp
index f15a3132d6d4188bbb1edfa1940c5eee3654f206..af1b93d3d9a7ea3cd7738412fdaf94cb28339233 100644
--- a/Level.hpp
+++ b/Level.hpp
@@ -31,6 +31,7 @@ public:
     DynamicPixelBuffer constructWallBuffer(Orientation orientation, int length, int thickness);
     PixelBuffer const& getSprite() override;
     void setWallColor(Color color);
+    Orientation getOrientation() const;
 
 private:
     int wallLength;
@@ -128,8 +129,8 @@ public:
     Level(int width, int heigth, Player &player);
     void addEnemyProjectile(const EnemyProjectile & projectile);
     void addPlayerProjectile(const PlayerProjectile& projectile);
-    void addWall(int length, int thickness, float posX, float posY, Orientation orientation);
-    void addScenery(float posX, float posY, SceneryType type);
+    void addWall(int length, int thickness, Position const &topleft, Orientation orientation);
+    void addScenery(Position const &topleft, SceneryType type);
     void addEnemy(std::unique_ptr<Enemy> enemy_);
     void fillTrooperSpawner(float posX, float posY, unsigned int nmbrEnemies);
     std::unique_ptr<Enemy> getTrooperSpawn();
diff --git a/Position.hpp b/Position.hpp
index 78911853451652c40bb7a45b3a795488b427537c..bc532b28a782465f91e7a10baa282826d3b6bdd5 100644
--- a/Position.hpp
+++ b/Position.hpp
@@ -22,6 +22,10 @@ public:
     float X;
     float Y;
 
+     bool operator ==(Position const &other) const {
+        return ((X == other.X) && (Y == other.Y));
+    }
+
     operator PixelPoint() const {
         return { static_cast<int>(X), static_cast<int>(Y) };
     }
diff --git a/main.cpp b/main.cpp
index b51b86b48eeced12e2df90a259142ed5f63fcc32..15bff3458bf9a60cd824cc18654055b101e7d2ba 100644
--- a/main.cpp
+++ b/main.cpp
@@ -37,10 +37,10 @@ void addBuilding(float x, float y, int size, Level &level_ptr)
 {
     int thickness = 3;
     // adds a Wall to the level (length, thickness, position X, position Y, orientation)
-    level_ptr.addWall(size, thickness, x, y, Orientation::Horizontal);
-    level_ptr.addWall(size, thickness, x, y + size - thickness, Orientation::Horizontal);
-    level_ptr.addWall(size, thickness, x, y, Orientation::Vertical);
-    level_ptr.addWall(size, thickness, x + size - thickness, y, Orientation::Vertical);
+    level_ptr.addWall(size, thickness, { x, y }, Orientation::Horizontal);
+    level_ptr.addWall(size, thickness, { x, y + size - thickness }, Orientation::Horizontal);
+    level_ptr.addWall(size, thickness, { x, y }, Orientation::Vertical);
+    level_ptr.addWall(size, thickness, { x + size - thickness, y }, Orientation::Vertical);
 }
 // kruegerzo72182>
 // <hoffmanncl72341
@@ -252,26 +252,26 @@ int run(Platform &platform)
     addBuilding(10, 200, 15, level1);
     addBuilding(285, 270, 15, level1);
     // adds a scenery object to the level (position X, position Y, scenerytype)
-    level1.addScenery(150, 80, SceneryType::Dead_Tree);
-    level1.addScenery(50, 200, SceneryType::Dead_Tree);
-    level1.addScenery(280, 290, SceneryType::Dead_Tree);
-    level1.addScenery(200, 220, SceneryType::Dead_Tree);
-    level1.addScenery(40, 15, SceneryType::Rock);
-    level1.addScenery(40, 15, SceneryType::Rock);
-    level1.addScenery(270, 65, SceneryType::Rock);
-    level1.addScenery(230, 135, SceneryType::Rock);
-    level1.addScenery(30, 90, SceneryType::Rock);
-    level1.addScenery(100, 40, SceneryType::Rubble);
-    level1.addScenery(250, 190, SceneryType::Rubble);
-    level1.addScenery(60, 270, SceneryType::Rubble);
-    level1.addScenery(205, 250, SceneryType::Rubble);
-    level1.addScenery(200, 100, SceneryType::Bush);
-    level1.addScenery(180, 280, SceneryType::Bush);
-    level1.addScenery(240, 275, SceneryType::Bush);
-    level1.addScenery(270, 240, SceneryType::Bush);
-    level1.addScenery(100, 250, SceneryType::Bush);
-    level1.addScenery(280, 165, SceneryType::Bush);
-    level1.addScenery(245, 25, SceneryType::Bush);
+    level1.addScenery({ 150, 80 }, SceneryType::Dead_Tree);
+    level1.addScenery({ 50, 200 }, SceneryType::Dead_Tree);
+    level1.addScenery({ 280, 290 }, SceneryType::Dead_Tree);
+    level1.addScenery({ 200, 220 }, SceneryType::Dead_Tree);
+    level1.addScenery({ 40, 15 }, SceneryType::Rock);
+    level1.addScenery({ 40, 15 }, SceneryType::Rock);
+    level1.addScenery({ 270, 65 }, SceneryType::Rock);
+    level1.addScenery({ 230, 135 }, SceneryType::Rock);
+    level1.addScenery({ 30, 90 }, SceneryType::Rock);
+    level1.addScenery({ 100, 40 }, SceneryType::Rubble);
+    level1.addScenery({ 250, 190 }, SceneryType::Rubble);
+    level1.addScenery({ 60, 270 }, SceneryType::Rubble);
+    level1.addScenery({ 205, 250 }, SceneryType::Rubble);
+    level1.addScenery({ 200, 100 }, SceneryType::Bush);
+    level1.addScenery({ 180, 280 }, SceneryType::Bush);
+    level1.addScenery({ 240, 275 }, SceneryType::Bush);
+    level1.addScenery({ 270, 240 }, SceneryType::Bush);
+    level1.addScenery({ 100, 250 }, SceneryType::Bush);
+    level1.addScenery({ 280, 165 }, SceneryType::Bush);
+    level1.addScenery({ 245, 25 }, SceneryType::Bush);
 
     // add enemies to the level
     level1.addEnemy(std::make_unique<Tank>(Tank(50, 150, direction::BACK, 0)));