diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java
index 5a69d632147c0890812db54ff01583ae1e0e667f..8814e44924d1ae71f4f6339b32046747e29b6ef8 100644
--- a/src/aliensimulator/AlienSimulator.java
+++ b/src/aliensimulator/AlienSimulator.java
@@ -16,6 +16,13 @@ import aliensimulator.verhalten.ErdeNeutralAdapter;
 public class AlienSimulator {
 	
 	public static void main(String[] args) {
+		try {
+			Class.forName("aliensimulator.predators.HishQuTen");
+			Class.forName("aliensimulator.predators.Yautja");
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
 		AlienFactory alienFactory = new AlienFactory();
 
 		Alien alienMars = alienFactory.createAlien("mars");
diff --git a/src/aliensimulator/predators/HishQuTen.java b/src/aliensimulator/predators/HishQuTen.java
index c65210b4965d8d2091327b5e72c929a3738c364e..b971f0f678cfdb9659ece1184af41470e17475c7 100644
--- a/src/aliensimulator/predators/HishQuTen.java
+++ b/src/aliensimulator/predators/HishQuTen.java
@@ -5,6 +5,10 @@ import aliensimulator.verhalten.ErdeNeutralAdapter;
 
 public class HishQuTen extends Predator {
 
+	static {
+		PredatorRegistry.register(new HishQuTen());
+	}
+
 	public HishQuTen() {
 		this.setErdeBesuchverhalten(new ErdeNeutralAdapter(new NeutralBesuchen()));
 	}
@@ -14,4 +18,8 @@ public class HishQuTen extends Predator {
 		System.out.println("Ich bin ein Hish-Qu-Ten.");
 	}
 
+	@Override
+	public Boolean canHandle(String type) {
+		return type.equalsIgnoreCase("hishquten");
+	}
 }
diff --git a/src/aliensimulator/predators/Predator.java b/src/aliensimulator/predators/Predator.java
index 56bc7ed62aa9b06cf6acf75832f8514643781c7f..1ca555914686861b070ee5960af5f432b25d8ece 100644
--- a/src/aliensimulator/predators/Predator.java
+++ b/src/aliensimulator/predators/Predator.java
@@ -7,6 +7,8 @@ public abstract class Predator {
 
     public abstract void darstellen();
 
+    public abstract Boolean canHandle(String type);
+
     public void fliegen() {
         System.out.println("Ich fliege durch den Weltraum.");
     }
diff --git a/src/aliensimulator/predators/PredatorFactory.java b/src/aliensimulator/predators/PredatorFactory.java
index 66292227c83710177e0105822eb594f722bb44dd..e1c84e6fddb8bc47b9578aab0ef6ed21693217ef 100644
--- a/src/aliensimulator/predators/PredatorFactory.java
+++ b/src/aliensimulator/predators/PredatorFactory.java
@@ -1,23 +1,15 @@
 package aliensimulator.predators;
 
-
-import java.io.IOException;
-import java.util.Properties;
-
 public class PredatorFactory {
 
 	public Predator createPredator(String type) {
 		Predator predator = null;
-		Properties properties = new Properties();
 
-		try {
-			properties.load(this.getClass().getResourceAsStream("predator.properties"));
-			String className = properties.getProperty(type);
-			Class<?> classOfPredator = Class.forName(className);
-			predator = (Predator) classOfPredator.newInstance();
-		} catch (IOException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
-			e.printStackTrace();
+		predator = PredatorRegistry.getPredatorHandler(type);
+		if (predator == null) {
+			System.out.println("Kein Handler gefunden");
 		}
+
 		return predator;
 	}
 }
diff --git a/src/aliensimulator/predators/PredatorRegistry.java b/src/aliensimulator/predators/PredatorRegistry.java
new file mode 100644
index 0000000000000000000000000000000000000000..e43f54abf6d50d2b05a38463dfd0f570292f942f
--- /dev/null
+++ b/src/aliensimulator/predators/PredatorRegistry.java
@@ -0,0 +1,25 @@
+package aliensimulator.predators;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
+public class PredatorRegistry {
+    static List<Predator> predatorHandlers = new ArrayList<Predator>();
+
+    static void register(Predator predator) {
+        predatorHandlers.add(predator);
+    }
+
+    static Predator getPredatorHandler(String type) {
+        ListIterator<Predator> iter = predatorHandlers.listIterator();
+        while (iter.hasNext()) {
+            Predator predator = iter.next();
+            if (predator.canHandle(type)) {
+                return predator;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/src/aliensimulator/predators/Yautja.java b/src/aliensimulator/predators/Yautja.java
index b7aee7571ffa2fde5d25a05cf5b8303ec0788283..d84de21816092836f71203512a5a2725d1dae84e 100644
--- a/src/aliensimulator/predators/Yautja.java
+++ b/src/aliensimulator/predators/Yautja.java
@@ -5,6 +5,10 @@ import aliensimulator.verhalten.ErdeZerstoererischAdapter;
 
 public class Yautja extends Predator {
 
+	static {
+		PredatorRegistry.register(new Yautja());
+	}
+
 	public Yautja() {
 		this.setErdeBesuchverhalten(new ErdeZerstoererischAdapter());
 	}
@@ -14,4 +18,8 @@ public class Yautja extends Predator {
 		System.out.println("Ich bin ein Yautja.");
 	}
 
+	@Override
+	public Boolean canHandle(String type) {
+		return type.equalsIgnoreCase("yautja");
+	}
 }
diff --git a/src/aliensimulator/predators/predator.properties b/src/aliensimulator/predators/predator.properties
deleted file mode 100644
index a1f5396a9b8cde58977be9f74eb2a680840745d0..0000000000000000000000000000000000000000
--- a/src/aliensimulator/predators/predator.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-yautja=aliensimulator.predators.Yautja
-hishquten=aliensimulator.predators.HishQuTen