diff --git a/src/main/java/Enums/VisualizerMethods.java b/src/main/java/Enums/VisualizerMethods.java
index 9bb67731d50c36d5fa8b88f9af46f6cebc33b00b..ea0502a72243bc606402d1f968e975eaa114ba81 100644
--- a/src/main/java/Enums/VisualizerMethods.java
+++ b/src/main/java/Enums/VisualizerMethods.java
@@ -4,5 +4,6 @@ public enum VisualizerMethods {
     Console,
     Image,
     Video,
-    Log
+    Log,
+    Generation
 }
diff --git a/src/main/java/MainClasses/Config.java b/src/main/java/MainClasses/Config.java
index adebb9c55d3020977199ece05247c60b1b597c46..40ae168202a1040c2c22d71895ed0199ffb5fc2d 100644
--- a/src/main/java/MainClasses/Config.java
+++ b/src/main/java/MainClasses/Config.java
@@ -176,6 +176,9 @@ public class Config {
                 case "log":
                     visualizers[i] = VisualizerMethods.Log;
                     break;
+                case "generation":
+                    visualizers[i] = VisualizerMethods.Generation;
+                    break;
             }
         }
 
diff --git a/src/main/java/MainClasses/GeneticAlgorithm.java b/src/main/java/MainClasses/GeneticAlgorithm.java
index b483b43a141f25d17dbe1632178c87e08c8e813d..b3441a420663c308c01ea8cddecbe14a6703e2b2 100644
--- a/src/main/java/MainClasses/GeneticAlgorithm.java
+++ b/src/main/java/MainClasses/GeneticAlgorithm.java
@@ -14,6 +14,7 @@ import Selectors.Tournament;
 import Visualization.Visualizers.BestFoldingToConsole;
 import Visualization.Visualizers.BestFoldingToImage;
 
+import Visualization.Visualizers.GenerationOverviewToConsole;
 import Visualization.Visualizers.GenerationProgressToLog;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -88,6 +89,9 @@ public class GeneticAlgorithm {
                 }else if (vm.equals(VisualizerMethods.Log)) {
                     this.visualizers[j] = new GenerationProgressToLog(isHydrophobic, config);
                     j++;
+                }else if (vm.equals(VisualizerMethods.Generation)) {
+                    this.visualizers[j] = new GenerationOverviewToConsole(isHydrophobic, config);
+                    j++;
                 }
             }
 
@@ -142,42 +146,14 @@ public class GeneticAlgorithm {
         evaluateGeneration(config.getTotalGenerations()-1);
     }
 
-    private int evaluateGeneration(int gen) {
-        // Evaluate current generation
-        System.out.println("Generation " + gen + ":");
-
-        double bestFitness = 0;
-        int bestIndex = 0;
-        this.totalFitness = 0;
-        for (int i = 0; i < config.getPopulationSize(); i++) {
+    private void evaluateGeneration(int gen) {
+        for (int i = 0; i < population.length; i++) {
             this.population[i] = this.evaluator.evaluateFitness(this.population[i]);
-            this.fitness[i] = this.population[i].getFitness();
-            this.totalFitness += this.fitness[i];
-
-            if (this.fitness[i] > bestFitness) {
-                bestFitness = this.fitness[i];
-                bestIndex = i;
-            }
         }
 
         for (Visualizer v : this.visualizers) {
-            //TODO Print real bond and overlap amount
             v.drawProtein(this.population, this);
         }
-
-        //TODO Print real bond and overlap amount
-        System.out.println("The fitness is: " + bestFitness
-                    + " [hydrophobicBonds = " + -1 + " | overlaps = " + -1 + "]");
-
-        // Save the overall best
-        if (bestFitness >= this.overallBestFitness) {
-            this.overallBestFitness = bestFitness;
-            this.overallBest = new Candidate(this.population[bestIndex].getFolding());
-        }
-
-        double averageFitness = this.totalFitness / config.getPopulationSize();
-
-        return bestIndex;
     }
 
     public int getMaxH() {
diff --git a/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java b/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e251e88b6f5c0152af9017183f09f99be934285
--- /dev/null
+++ b/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
@@ -0,0 +1,43 @@
+package Visualization.Visualizers;
+
+import Evaluators.EvaluatorNESW;
+import Interfaces.Visualizer;
+import MainClasses.Candidate;
+import MainClasses.Config;
+import MainClasses.GeneticAlgorithm;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class GenerationOverviewToConsole implements Visualizer {
+
+  final int[] isHydrophobic;
+  Config config;
+
+  EvaluatorNESW bondsOverlapsEvaluator;
+
+  public GenerationOverviewToConsole(int[] isHydrophobic, Config config) {
+    this.isHydrophobic = isHydrophobic;
+    this.config = config;
+    bondsOverlapsEvaluator = new EvaluatorNESW(1,isHydrophobic);
+  }
+
+  @Override
+  public void drawProtein(Candidate[] generation, GeneticAlgorithm geneticAlgorithm) {
+    //TODO This should be done in the new Generation class
+    Candidate bestCandidateOfGeneration = generation[0];
+    for(Candidate candidate: generation){
+      if(candidate.getFitness() > bestCandidateOfGeneration.getFitness()){
+        bestCandidateOfGeneration = candidate;
+      }
+    }
+
+    int bonds = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration);
+    int overlaps = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration);
+
+    System.out.println("Generation " + geneticAlgorithm.generation + ":");
+    System.out.println("The fitness is: "
+        + bestCandidateOfGeneration.getFitness()
+        + " [hydrophobicBonds = " + bonds + " | overlaps = " + overlaps + "]");
+  }
+}