diff --git a/src/main/java/MainClasses/GeneticAlgorithm.java b/src/main/java/MainClasses/GeneticAlgorithm.java
index fb2725b93bef99e62d91f0422064c11958b15cfb..16f6c3daf1710a68da542e434aed1daec1c55630 100644
--- a/src/main/java/MainClasses/GeneticAlgorithm.java
+++ b/src/main/java/MainClasses/GeneticAlgorithm.java
@@ -126,7 +126,7 @@ public class GeneticAlgorithm {
         } else if (config.getSelectionMethod().equals(SelectionMethods.Tournament)) {
             this.selector = new Tournament(this.config, this.rand);
         } else if (config.getSelectionMethod().equals(SelectionMethods.OnlyBest)) {
-            this.selector = new OnlyBest(this.isHydrophobic);
+            this.selector = new OnlyBest();
         }
     }
 
diff --git a/src/main/java/Selectors/OnlyBest.java b/src/main/java/Selectors/OnlyBest.java
index 4f0980bf5ba0b432a6f298c859a1b0fa445b76c3..721dd557591b09f79c892d9815701c7bfe727556 100644
--- a/src/main/java/Selectors/OnlyBest.java
+++ b/src/main/java/Selectors/OnlyBest.java
@@ -7,31 +7,21 @@ import java.util.Random;
 
 public class OnlyBest implements Selector {
 
-    int[] isHydrophobic;
-
-    public OnlyBest(int[] isHydrophobic) {
-        this.isHydrophobic = isHydrophobic;
+    public OnlyBest() {
     }
 
     @Override
-    public Candidate[] selectNewPopulation(Candidate[] population, double[] fitness, double totalFitness) {
-        int populationSize = population.length;
-
-        int bestIndex = 0;
-        double bestFitness = 0;
-
-        for (int i = 0; i < populationSize; i++) {
-            if (fitness[i] >= bestFitness) {
-                bestFitness = fitness[i];
-                bestIndex = i;
+    public Candidate[] selectNewPopulation(Candidate[] generation) {
+        Candidate bestCandidate = generation[0];
+        for (Candidate candidate: generation) {
+            if (candidate.getFitness() >= bestCandidate.getFitness()) {
+                bestCandidate = candidate;
             }
         }
 
-        Candidate[] newPopulation = new Candidate[populationSize];
-        int[] bestFolding = population[bestIndex].getFolding();
-
-        for (int i = 0; i < populationSize; i++) {
-            newPopulation[i] = new Candidate(bestFolding);
+        Candidate[] newPopulation = new Candidate[generation.length];
+        for (int i = 0; i < generation.length; i++) {
+            newPopulation[i] = new Candidate(bestCandidate.getFolding());
         }
 
         return newPopulation;