diff --git a/src/de/itstall/Lager.java b/src/de/itstall/Lager.java
index 1033b70305c02730536e84bcfe3479ad089fd303..8858251021bb3bae07d05f4d50f4b5f2b89142bd 100644
--- a/src/de/itstall/Lager.java
+++ b/src/de/itstall/Lager.java
@@ -1,105 +1,121 @@
 package de.itstall;
 
 import java.util.ArrayList;
+import java.util.function.Predicate;
 
 /**
  * Klasse zur Verwaltung der Lager
  */
 public class Lager {
 
-	/**
-	 * Liste der Regale im aktuellen Lager
-	 */
-	ArrayList<Regal> lagerListe = new ArrayList<>();
-
-	/**
-	 * Anzahl der Lagerplaetze pro Regal
-	 */
-	private int regalLagerplaetze;
-
-	/**
-	 * Der Konstruktor legt gleich schon mal ein Regal an und legt auch die Lagerplaetze pro Regal fest
-	 *
-	 * @param lagerplaetze : int : Anzahl der Etagen pro Regal
-	 */
-	public Lager(int lagerplaetze) {
-		this.regalLagerplaetze = lagerplaetze;
-		this.addRegal();
-	}
+    /**
+     * Liste der Regale im aktuellen Lager
+     */
+    ArrayList<Regal> lagerListe = new ArrayList<>();
 
-	/**
-	 * Gibt die Anzahl der Regal Lagerplaetze zurueck
-	 *
-	 * @return int : Anzahl der Lagerplaetze pro Regal
-	 */
-	public int getRegalLagerplaetze() {
-		return this.regalLagerplaetze;
-	}
+    /**
+     * Anzahl der Lagerplaetze pro Regal
+     */
+    private int regalLagerplaetze;
 
-	/**
-	 * Fuegt dem Lager ein Regal hinzu
-	 */
-	public void addRegal() {
-		this.lagerListe.add(new Regal());
-	}
+    /**
+     * Der Konstruktor legt gleich schon mal ein Regal an und legt auch die Lagerplaetze pro Regal fest
+     *
+     * @param lagerplaetze : int : Anzahl der Etagen pro Regal
+     */
+    public Lager(int lagerplaetze) {
+        this.regalLagerplaetze = lagerplaetze - 1;
+        this.addRegal();
+    }
 
-	/**
-	 * Sucht auf den Lagerplaetzen nach einem Objekt und gibt den Lagerplatz zurueck
-	 *
-	 * //@param o : Object : Das zu suchende Object
-	 * @return Object : Lagerplatz
-	 */
-	public Object finden(String bezeichnung) {
-		for(Regal regal : lagerListe) {
-			for(Karton<?> lagerPlatz : regal.lagerplaetzListe) {
-				if (lagerPlatz.getBezeichnung().equals(bezeichnung)) {
-					return lagerPlatz.getObjekt();
-				}
-				System.out.println(lagerPlatz.toString());
-			}
-		}
-		return null;
-	}
+    /**
+     * Gibt die Anzahl der Regal Lagerplaetze zurueck
+     *
+     * @return int : Anzahl der Lagerplaetze pro Regal
+     */
+    public int getRegalLagerplaetze() {
+        return this.regalLagerplaetze;
+    }
 
-	public void einlagern(Karton<?> karton) {
-		for(Regal regal : lagerListe) {
-			if(regal.lagerplaetzListe.size() < this.regalLagerplaetze) {
-				regal.lagerplaetzListe.add(karton);
-			}
-		}
-	}
+    /**
+     * Fuegt dem Lager ein Regal hinzu
+     */
+    public void addRegal() {
+        this.lagerListe.add(new Regal());
+		System.out.println("Neues Regal wurde gebaut.");
+    }
+
+    /**
+     * Sucht auf den Lagerplaetzen nach einem Objekt und gibt den Lagerplatz zurueck
+     * <p>
+     * //@param o : Object : Das zu suchende Object
+     *
+     * @return Object : Lagerplatz
+     */
+    public Object finden(String bezeichnung) {
+        for (Regal regal : lagerListe) {
+            for (Karton<?> lagerPlatz : regal.lagerplaetzListe) {
+                if (lagerPlatz.getBezeichnung().equals(bezeichnung)) {
+
+                    return lagerPlatz.getObjekt();
+                }
+            }
+        }
 
-	public void entnehmen(String bezeichnung) {
-		for(Regal regal : lagerListe) {
-			for(Karton<?> lagerPlatz : regal.lagerplaetzListe) {
-				regal.lagerplaetzListe.remove(regal.lagerplaetzListe.indexOf(lagerPlatz.getBezeichnung().equals(bezeichnung)));
+        return null;
+    }
+
+    public boolean einlagern(Karton<?> karton) {
+    	for (Regal regal : lagerListe) {
+            if (regal.lagerplaetzListe.size() <= this.regalLagerplaetze) {
+                regal.lagerplaetzListe.add(karton);
+
+                return true;
+            } else {
+				this.addRegal();
+				this.einlagern(karton);
+
+				return true;
 			}
-		}
-	}
+        }
+
+    	return false;
+    }
 
-	/**
-	 * Klasse zur Verwaltung der Regale
-	 * Ein Regal kan max. fünf Lagerplaetze besitzen
-	 */
-	public class Regal {
-
-		/**
-		 * Liste der Lagerplaetze in dem aktuellen Regal
-		 */
-		ArrayList<Karton> lagerplaetzListe = new ArrayList<>();
-
-		/**
-		 * Wenn im aktuellen Regal noch ein Lagerplatz frei ist, wird ein Platz abgezogen.
-		 * Ansonten wird ein neues Regal angebaut.
-		 */
-		public void einlagern(Karton<?> karton) {
-			if(lagerplaetzListe.size() < Lager.this.regalLagerplaetze) {
-				lagerplaetzListe.add(karton);
-			} else {
-				Lager.this.addRegal();
+    public boolean entnehmen(String bezeichnung) {
+        for (Regal regal : lagerListe) {
+			if(regal.lagerplaetzListe.removeIf(karton -> karton.getBezeichnung().equals(bezeichnung))) {
+
+				return true;
 			}
 		}
 
+		return false;
 	}
 
+    /**
+     * Klasse zur Verwaltung der Regale
+     * Ein Regal kan max. fünf Lagerplaetze besitzen
+     */
+    public class Regal {
+
+        /**
+         * Liste der Lagerplaetze in dem aktuellen Regal
+         */
+        ArrayList<Karton> lagerplaetzListe = new ArrayList<>();
+
+        /**
+         * Wenn im aktuellen Regal noch ein Lagerplatz frei ist, wird ein Platz abgezogen.
+         * Ansonten wird ein neues Regal angebaut.
+         */
+        public void einlagern(Karton<?> karton) {
+            if (lagerplaetzListe.size() < Lager.this.regalLagerplaetze) {
+                lagerplaetzListe.add(karton);
+            } else {
+                Lager.this.addRegal();
+            }
+        }
+
+    }
+
 }
diff --git a/src/de/itstall/Main.java b/src/de/itstall/Main.java
index 4496a7dbf5a21ab93e700cd2f4f06370baa50860..5672bed458bbae8da130cdb77310d0ecd09e0018 100644
--- a/src/de/itstall/Main.java
+++ b/src/de/itstall/Main.java
@@ -1,49 +1,87 @@
 package de.itstall;
 
-import de.itstall.Lager.Regal;
-
-import java.util.ArrayList;
-
 public class Main {
 
-    /**
-     * Lager
-     *  - Regal
-     *      - Etagen (max 5)
-     *          - Lagerplatz (1 Etage == 1 Lagerplatz)
-     *
-     * Wenn Lagerplatz == 0 : Regal hinzufügen
-     *
-     * @param args
-     */
     public static void main(String[] args) {
-	    Karton<String> karton = new Karton<>();
-	    String tempObject = "Test Object";
-	    karton.setBezeichnung("Test");
-	    karton.setObjekt(tempObject);
+		Lager lager = new Lager(5);
+		String suche = "";
 
-	    Lager lager = new Lager(5);
+		Karton<String> karton = new Karton<>();
+		karton.setBezeichnung("Test");
+		karton.setObjekt(new String("Test Object"));
 
-	    lager.einlagern(karton);
+		if(lager.einlagern(karton)) {
+			System.out.println("Karton \"" + karton.getBezeichnung() + "\" eingelagert.");
+		} else {
+			System.out.println("Konnte Karton \"" + karton.getBezeichnung() + "\" nicht eingelagern.");
+		}
 
-	    System.out.println("Gibt's schon was?");
-	    System.out.println(lager.finden("Test"));
-	    Object gesuchterKarton = lager.finden("Test");
+		Karton<String> karton2 = new Karton<>();
+		karton2.setBezeichnung("Test2");
+		karton.setObjekt(new String("Test Object2"));
+
+		if(lager.einlagern(karton2)) {
+			System.out.println("Karton \"" + karton2.getBezeichnung() + "\" eingelagert.");
+		} else {
+			System.out.println("Konnte Karton \"" + karton2.getBezeichnung() + "\" nicht eingelagern.");
+		}
 
-	    lager.entnehmen("Test");
+		Karton<String> karton3 = new Karton<>();
+		karton3.setBezeichnung("Test3");
+		karton.setObjekt(new String("Test Object3"));
 
-	    System.out.println(lager.finden("Test"));
+		if(lager.einlagern(karton3)) {
+			System.out.println("Karton \"" + karton3.getBezeichnung() + "\" eingelagert.");
+		} else {
+			System.out.println("Konnte Karton \"" + karton3.getBezeichnung() + "\" nicht eingelagern.");
+		}
 
-	    /*for(Regal regal : lager.lagerListe) {*/
-/**/
-        /*}*/
+		Karton<String> karton4 = new Karton<>();
+		karton4.setBezeichnung("Test4");
+		karton.setObjekt(new String("Test Object4"));
 
-	    //Lager.Regal lagerListe = lager.lagerListe;
+		if(lager.einlagern(karton4)) {
+			System.out.println("Karton \"" + karton4.getBezeichnung() + "\" eingelagert.");
+		} else {
+			System.out.println("Konnte Karton \"" + karton4.getBezeichnung() + "\" nicht eingelagern.");
+		}
+
+		Karton<String> karton5 = new Karton<>();
+		karton5.setBezeichnung("Test5");
+		karton.setObjekt(new String("Test Object5"));
+
+		if(lager.einlagern(karton5)) {
+			System.out.println("Karton \"" + karton5.getBezeichnung() + "\" eingelagert.");
+		} else {
+			System.out.println("Konnte Karton \"" + karton5.getBezeichnung() + "\" nicht eingelagern.");
+		}
+
+		suche = "Test";
+	    if(lager.finden(suche) != null) {
+			System.out.println("Karton \"" + suche + "\" gefunden.");
+		} else {
+			System.out.println("Konnte Karton \"" + suche + "\" nicht finden");
+		}
+	    Object gesuchterKarton = lager.finden("Test");
 
-	    //ArrayList<Regal> lagerPlaetze = lager.lagerListe;
+	    suche = "Test";
+	    if(lager.entnehmen(suche)) {
+			System.out.println("-> Karton \"" + suche + "\" aus dem Lager geholt.");
+		} else {
+			System.out.println("Konnte Karton \"" + suche + "\" nicht finden.");
+		}
 
-	    //Lager.Regal.Lagerplatz lagerplatz = lagerListe.new Lagerplatz();
+		if(lager.finden(suche) != null) {
+			System.out.println("Karton \"" + suche + "\" gefunden.");
+		} else {
+			System.out.println("Konnte Karton \"" + suche + "\" nicht finden");
+		}
 
-        //lagerplatz.einlagern(karton);
+		suche = "Test2";
+		if(lager.finden(suche) != null) {
+			System.out.println("Karton \"" + suche + "\" gefunden.");
+		} else {
+			System.out.println("Konnte Karton \"" + suche + "\" nicht finden");
+		}
     }
 }