diff --git a/src/main/java/MainClasses/Candidate.java b/src/main/java/MainClasses/Candidate.java
index db5e6ec7f475a476b52043eb77f0722d0d37e1d6..985f542302ff1a20f900d515022d406ccc9fff97 100644
--- a/src/main/java/MainClasses/Candidate.java
+++ b/src/main/java/MainClasses/Candidate.java
@@ -6,7 +6,7 @@ import java.util.Arrays;
 public class Candidate {
 
     int[] isHydrophobic;       // 0 = no | 1 = yes
-    int[] outgoingDirection;   // 0 = North | 1 = East | 2 = South | 3 = West
+    public int[] outgoingDirection;   // 0 = North | 1 = East | 2 = South | 3 = West
     public ArrayList<Vertex> vertexList;
     public double fitness;
 
@@ -18,7 +18,7 @@ public class Candidate {
         this.fitness = -1d; // Not calculated yet
     }
 
-    private ArrayList<Vertex> constructVertexes() {
+    public ArrayList<Vertex> constructVertexes() {
         ArrayList<Vertex> vertexList = new ArrayList<>();
         int currentX = 0;
         int currentY = 0;
@@ -46,30 +46,6 @@ public class Candidate {
         return vertexList;
     }
 
-    public void mutateDir(int mutationPlace, int mutation) {
-        outgoingDirection[mutationPlace] = mutation;
-        this.vertexList = constructVertexes();
-    }
-
-    public void crossover(Candidate partner, int crossoverPlace) {
-        // Save this gene for a moment while skipping the part that stays
-        int[] originalDirections = new int[outgoingDirection.length];
-        for (int i = crossoverPlace; i < outgoingDirection.length; i++) {
-            originalDirections[i] = outgoingDirection[i];
-        }
-
-        // Edit these directions
-        for (int i = crossoverPlace; i < outgoingDirection.length; i++) {
-            outgoingDirection[i] = partner.outgoingDirection[i];
-        }
-
-        // Edit partners directions
-        for (int i = crossoverPlace; i < outgoingDirection.length; i++) {
-            partner.outgoingDirection[i] = originalDirections[i];
-        }
-
-    }
-
     @Override
     public String toString() {
         return "Canidate{" +
diff --git a/src/main/java/Mutators/Crossover.java b/src/main/java/Mutators/Crossover.java
index 085efce160847bdefa1dc6b4a88b883f6be26818..594adb1c89a8f4798cbb3fde3296f34f9aa1fed4 100644
--- a/src/main/java/Mutators/Crossover.java
+++ b/src/main/java/Mutators/Crossover.java
@@ -35,7 +35,21 @@ public class Crossover<T extends Enum<?>> implements Mutator {
                     if (this.crossoverChance > this.rand.nextDouble()) {
                         int crossoverPartner = this.rand.nextInt(populationSize);
                         int crossoverPlace = this.rand.nextInt(proteinLength);
-                        candidate.crossover(population[crossoverPartner], crossoverPlace);
+
+                        int[] originalDirections = new int[candidate.outgoingDirection.length];
+                        for (int i = crossoverPlace; i < candidate.outgoingDirection.length; i++) {
+                            originalDirections[i] = candidate.outgoingDirection[i];
+                        }
+
+                        // Edit these directions
+                        for (int i = crossoverPlace; i < candidate.outgoingDirection.length; i++) {
+                            candidate.outgoingDirection[i] = population[crossoverPartner].outgoingDirection[i];
+                        }
+
+                        // Edit partners directions
+                        for (int i = crossoverPlace; i < candidate.outgoingDirection.length; i++) {
+                            population[crossoverPartner].outgoingDirection[i] = originalDirections[i];
+                        }
                     }
                 }
             }
diff --git a/src/main/java/Mutators/SinglePoint.java b/src/main/java/Mutators/SinglePoint.java
index e4f313d19398092fc80c05ba69de6b6bcc390ea1..90e42058ea3b1fde3c071488f7aa02dd2f29412c 100644
--- a/src/main/java/Mutators/SinglePoint.java
+++ b/src/main/java/Mutators/SinglePoint.java
@@ -35,9 +35,11 @@ public class SinglePoint<T extends Enum<?>> implements Mutator {
                         int mutationPlace = this.rand.nextInt(proteinLength);
                         // TODO: Use the enums or get rid of this hard coded 3 and 4...
                         if (this.isFRL) {
-                            candidate.mutateDir(mutationPlace, this.rand.nextInt(3));
+                            candidate.outgoingDirection[mutationPlace] = this.rand.nextInt(3);
+                            candidate.vertexList = candidate.constructVertexes();
                         } else {
-                            candidate.mutateDir(mutationPlace, this.rand.nextInt(4));
+                            candidate.outgoingDirection[mutationPlace] = this.rand.nextInt(4);
+                            candidate.vertexList = candidate.constructVertexes();
                         }
                     }
                 }