diff --git a/rover.py b/rover.py
index 4e2e777e68560367367f8575c5dc21ca704b2c34..4a846d264e463a13302c2eafaac26475f2eaa975 100644
--- a/rover.py
+++ b/rover.py
@@ -55,4 +55,53 @@
 
 # Bonus: Kombination mehrerer Features
 # Wenn der Rover die Sequenz "FFRBFRL" erhält, aber nach dem "R" auf ein Hindernis trifft, bleibt er stehen und ignoriert "BFRL".
-# Wenn der Rover bei (15,15) steht, Richtung Nord-Ost, und "FF" erhält, wird nach dem ersten Schritt gestoppt (Plateau-Rand), Position bei (16,16) erreicht nicht – Rover bleibt bei (15,15).
\ No newline at end of file
+# Wenn der Rover bei (15,15) steht, Richtung Nord-Ost, und "FF" erhält, wird nach dem ersten Schritt gestoppt (Plateau-Rand), Position bei (16,16) erreicht nicht – Rover bleibt bei (15,15).
+
+import unittest
+from abc import ABC, abstractmethod
+
+class Plateau:
+    def __init__(self, size_x:int, size_y:int):
+        self.size_x = size_x
+        self.size_y = size_y
+        self.grid = [[None for _ in range(size_x)] for _ in range(size_y)]
+        self.obstacles = []
+
+    def move(self, x:int, y:int):
+        if (x, y) in self.obstacles:
+            raise Exception("Obstacle detected!")
+        print(f"Rover moved to ({x}, {y})")
+
+class Rover:
+    def __init__(self, x=0, y=0, direction='N'):
+        self.x = x
+        self.y = y
+        self.direction = direction
+
+
+    def drive(self, cmd: str) -> str:
+        pass
+
+
+class Mars:
+    def __init__(self, plateau:Plateau, rover:Rover):
+        self.plateau = plateau
+        self.rover = rover
+        self.rover_x = 0
+        self.rover_y = 0
+
+    def drive(self, cmd: str) -> str:
+        return self.rover.drive(cmd)
+
+
+class Map:
+    def __init__(self):
+        self.map = []
+
+    def move(self, x:int, y:int):
+        print(f"Rover moved to ({x}, {y})")
+
+
+class MissionControl:
+    def __init__(self):
+        pass
\ No newline at end of file