diff --git a/src/Regelwerk.java b/src/Regelwerk.java
index b56445195bc6a1afa0490ab80ca03aed4d3d10c1..58cfbf7d56511d676a735c6aef6430a884b23177 100644
--- a/src/Regelwerk.java
+++ b/src/Regelwerk.java
@@ -8,34 +8,33 @@ public class Regelwerk {
     public ArrayList<Integer> reihenfolge;
     public ArrayList<Farbe> color;
 
-    public void reihenfolgeFestlegen() { // spieler index in Array gespeichert
+    public void reihenfolgeFestlegen(int length) {
         reihenfolge = new ArrayList<Integer>();
-        reihenfolge.add(0, 0); // index , value
-        reihenfolge.add(1, 1);
-        reihenfolge.add(2, 2);
-        reihenfolge.add(3, 3);
+        for(int i = 0; i < length; i++) {
+            reihenfolge.add(i,i);
+        }
     }
 
     public UnoKarte ersteKarte(UnoDeck hand, int zug, int anzahl) {
         if (zug == 1) {
-            Random rand = new Random(); // random zahl wird generriert
-            int n = rand.nextInt(anzahl); // random zahl von 0 bis DeckSize wird in n gespeichert
-            UnoKarte aktuellekarte = hand.get(n); // n wird in aktuelle karte gespeichert
+            Random rand = new Random();
+            int n = rand.nextInt(anzahl);
+            UnoKarte aktuellekarte = hand.get(n);
             System.out.println("Die Aktuelle Karte:");
-            System.out.println(aktuellekarte); // ausgabe
+            System.out.println(aktuellekarte);
             return aktuellekarte;
         }
         return hand.get(1);
     }
     public void aktuelleKarte(UnoKarte letzteKarte) {
         System.out.println("Die Aktuelle Karte:");
-        System.out.println(letzteKarte); // ausgabe aktuelle karte
+        System.out.println(letzteKarte);
     }
 
     public int reihenfolge() {
-        int aktuell = reihenfolge.get(0); // erster spieler wird gespeichert
-        reihenfolge.remove(0); //erster spieler wird geklöscht
-        reihenfolge.add(aktuell); // erster spieler wird am ende des arrays eingefügt
+        int aktuell = reihenfolge.get(0);
+        reihenfolge.remove(0);
+        reihenfolge.add(aktuell);
         return aktuell;
     }
     public void wunschFestlegen(){
@@ -43,91 +42,90 @@ public class Regelwerk {
         color.add(0,Farbe.Wild);
     }
 
-    public boolean karteLegbar(UnoKarte aktuellekarte, UnoKarte neueKarte, String PlayerName[], UnoDeck deck, SpielerHand spielerHand) {
-        if (color.size() == 2) {// wird erst bei einem kartenWunsch genutzt
-            System.out.println("Wunchfarbe: " + color.get(1));
-            if ((color.get(1) == neueKarte.getFarbe()) || (color.get(0) == neueKarte.getFarbe())) { //  bedingung wunschfarbe selbe wie aktuelle Karten farbe  oder bedingung ist wild auf wild
-                color.remove(1); // karte wird gelegt
-                return Lege(aktuellekarte, neueKarte, PlayerName, deck, spielerHand);
+    public boolean karteLegbar(UnoKarte aktuellekarte, UnoKarte neueKarte, UnoDeck deck, SpielerHand spielerHand, int lenght) {
+        if (color.size() == 2) {
+            if ((color.get(1) == neueKarte.getFarbe()) || (color.get(0) == neueKarte.getFarbe())) {
+                color.remove(1);
+                return Lege(aktuellekarte, neueKarte,deck, spielerHand,lenght);
             }else {
                 return false;
             }
-        } else { // wird aufgerufen wenn keine wunschfarbe existiert
-            return Lege(aktuellekarte, neueKarte, PlayerName, deck, spielerHand);
+        } else {
+            return Lege(aktuellekarte, neueKarte, deck, spielerHand,lenght);
         }
     }
 
-    public boolean Lege(UnoKarte aktuellekarte, UnoKarte neueKarte,String PlayerName[], UnoDeck deck, SpielerHand spielerHand){
-        if ((aktuellekarte.getFarbe() == neueKarte.getFarbe()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {// Farb kontrolle -> Bedingungen ob legbar oder nicht
+    public boolean Lege(UnoKarte aktuellekarte, UnoKarte neueKarte,UnoDeck deck, SpielerHand spielerHand, int lenght){
+        if ((aktuellekarte.getFarbe() == neueKarte.getFarbe()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {
             if (neueKarte.getWert() == Wert.Zwei_Ziehen) {
-                Ziehen(PlayerName, deck, 2, spielerHand);
+                Ziehen(deck, 2, spielerHand);
             } else if (neueKarte.getWert() == Wert.Aussetzen) {
                 aussetzen();
             } else if (neueKarte.getWert() == Wert.Richtungswechsel) {
-                richtungaendern();
+                richtungaendern(lenght);
             } else if (neueKarte.getWert() == Wert.Multicolor) {
-                wunschFarbe();
+                //wunschFarbe();
             }else if (neueKarte.getWert() == Wert.Draw_Four) {
-                wunschFarbe();
-                Ziehen(PlayerName, deck, 4, spielerHand);
+                //wunschFarbe();
+                Ziehen(deck, 4, spielerHand);
             }
             return true;
-        } else if ((aktuellekarte.getWert() == neueKarte.getWert()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {// Wert kontrolle -> (zB gruene vier geht auft blaue vier)
+        } else if ((aktuellekarte.getWert() == neueKarte.getWert()) || (Farbe.Wild == neueKarte.getFarbe()) || ((aktuellekarte.getFarbe() == Farbe.Wild) && (Farbe.Wild != neueKarte.getFarbe()))) {
             if (neueKarte.getWert() == Wert.Zwei_Ziehen) {
-                Ziehen(PlayerName, deck, 2, spielerHand);
+                Ziehen(deck, 2, spielerHand);
             } else if (neueKarte.getWert() == Wert.Aussetzen) {
                 aussetzen();
             } else if (neueKarte.getWert() == Wert.Richtungswechsel) {
-                richtungaendern();
+                richtungaendern(lenght);
             }else if (neueKarte.getWert() == Wert.Multicolor) {
-                wunschFarbe();
+                //wunschFarbe();
             }else if (neueKarte.getWert() == Wert.Draw_Four) {
-                wunschFarbe();
-                Ziehen(PlayerName, deck, 4, spielerHand);
+                //wunschFarbe();
+                Ziehen(deck, 4, spielerHand);
             }
             return true;
         }
         return false;
     }
-    public void Ziehen(String PlayerName[], UnoDeck deck, int anzahl,SpielerHand spielerHand){
+    public void Ziehen(UnoDeck deck, int anzahl,SpielerHand spielerHand){
         int spieler = reihenfolge.get(0);
         spielerHand.befuelleSpieleHand(spieler, deck, anzahl);
     }
     public void aussetzen(){
-        int aktuell = reihenfolge.get(0);// spieler wird in aktuell gespeichert
-        reihenfolge.remove(0);// nächster spieler wird gelöscht
-        reihenfolge.add(aktuell);// wird am ende des arrays hinzugefügt
+        int aktuell = reihenfolge.get(0);
+        reihenfolge.remove(0);
+        reihenfolge.add(aktuell);
     }
-    public void richtungaendern(){
-        int [] richtungswechsel = new int[4];// neuer array richtungswechsel
+    public void richtungaendern(int lenght){
+        int [] richtungswechsel = new int[lenght];
         for(int i = 0; i < reihenfolge.size(); i++){
-            richtungswechsel[i] = reihenfolge.get(i);// kopiervorgang der spieler zu richtungswechsel
+            richtungswechsel[i] = reihenfolge.get(i);
         }
         int size = reihenfolge.size();
         for (int i = 0; i < size; i++) {
-            reihenfolge.remove(0);// löscht die einträge vom altem array
+            reihenfolge.remove(0);
         }
-        for(int i = 3; i >= 0; i--){
-            reihenfolge.add(richtungswechsel[i]);// werte werden umgekehrt in den alten array wieder eingefügt
+        for(int i = size-1; i >= 0; i--){
+            reihenfolge.add(richtungswechsel[i]);
         }
-        int zwischen = reihenfolge.get(0); // erster spieler wird in zwischen gespeichert
-        reihenfolge.remove(0);// erster spieler wird gelöscht
-        reihenfolge.add(zwischen);// erster spieler wird im array neu eingefügtr aber hinten
+        int zwischen = reihenfolge.get(0);
+        reihenfolge.remove(0);
+        reihenfolge.add(zwischen);
     }
     public void wunschFarbe(){
         System.out.println("Welche Farbe möchteswt du?(Gruen, Blau, Gelb, Rot)");
         switch (scanner.nextLine().toLowerCase()){
             case "gruen":
-                color.add(Farbe.Gruen);// fügt in den array eine gruene Karte hinzu so kann als nächstes nur gruen gelegt werden
+                color.add(Farbe.Gruen);
                 break;
             case "blau":
-                color.add(Farbe.Blau);// "
+                color.add(Farbe.Blau);
                 break;
             case "gelb":
-                color.add(Farbe.Gelb);// "
+                color.add(Farbe.Gelb);
                 break;
             case "rot":
-                color.add(Farbe.Rot);// "
+                color.add(Farbe.Rot);
                 break;
         }
     }