diff --git a/src/main/java/Interfaces/Visualizer.java b/src/main/java/Interfaces/Visualizer.java
index 1b6c6469d26ab638e7da50c435a5c72dc67587c4..a6321784c53e8b5af6193c12de551f2c48b17109 100644
--- a/src/main/java/Interfaces/Visualizer.java
+++ b/src/main/java/Interfaces/Visualizer.java
@@ -4,7 +4,7 @@ import Enums.State;
 import MainClasses.Candidate;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/Visualization/Cell.java b/src/main/java/MainClasses/Cell.java
similarity index 98%
rename from src/main/java/Visualization/Cell.java
rename to src/main/java/MainClasses/Cell.java
index c801e7051ea5865bd9be72ac658db473c2d883ae..5dfd229e44a63643c6acd2114da50561812fe962 100644
--- a/src/main/java/Visualization/Cell.java
+++ b/src/main/java/MainClasses/Cell.java
@@ -1,4 +1,4 @@
-package Visualization;
+package MainClasses;
 
 import Enums.State;
 
diff --git a/src/main/java/MainClasses/GeneticAlgorithm.java b/src/main/java/MainClasses/GeneticAlgorithm.java
index a38a01a9a2bb94e233cacb9e2e63aff5d1b1ecf0..4ea194cc313d044e216d781f0c3cafc656974575 100644
--- a/src/main/java/MainClasses/GeneticAlgorithm.java
+++ b/src/main/java/MainClasses/GeneticAlgorithm.java
@@ -11,16 +11,12 @@ import Mutators.SinglePoint;
 import Selectors.FitnessProportional;
 import Selectors.OnlyBest;
 import Selectors.Tournament;
-import Visualization.Visualizers.BestFoldingToConsole;
-import Visualization.Visualizers.BestFoldingToImage;
-
-import Visualization.Visualizers.BestFoldingsToVideo;
-import Visualization.Visualizers.GenerationOverviewToConsole;
-import Visualization.Visualizers.GenerationProgressToLog;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
+import Visualizers.BestFoldingToConsole;
+import Visualizers.BestFoldingToImage;
+
+import Visualizers.BestFoldingsToVideo;
+import Visualizers.GenerationOverviewToConsole;
+import Visualizers.GenerationProgressToLog;
 import java.util.Random;
 
 public class GeneticAlgorithm {
diff --git a/src/main/java/Visualization/JCodecPNGtoMP4.java b/src/main/java/MainClasses/JCodecPNGtoMP4.java
similarity index 99%
rename from src/main/java/Visualization/JCodecPNGtoMP4.java
rename to src/main/java/MainClasses/JCodecPNGtoMP4.java
index 0b730a24c39c0e56e54db63a3c94a0a816aeb0b0..f037c5c8b67ba821158b697f466263a0c087ad64 100644
--- a/src/main/java/Visualization/JCodecPNGtoMP4.java
+++ b/src/main/java/MainClasses/JCodecPNGtoMP4.java
@@ -1,4 +1,4 @@
-package Visualization;
+package MainClasses;
 
 /**
  * Using NIO e JCodec to convert multiple sequence png images to mp4 video file
diff --git a/src/main/java/MainClasses/Main.java b/src/main/java/MainClasses/Main.java
index ffa497e0d42fc1d0b350ddc4765b45a3e1ac1e47..1fd7b3b0500764d600b4762313cc68ca1511442d 100644
--- a/src/main/java/MainClasses/Main.java
+++ b/src/main/java/MainClasses/Main.java
@@ -1,10 +1,5 @@
 package MainClasses;
 
-import Enums.VisualizerMethods;
-import Visualization.VideoCreator;
-
-import java.util.Arrays;
-
 public class Main {
 
     public static void main(String[] args) {
diff --git a/src/main/java/Visualization/VideoCreator.java b/src/main/java/Visualization/VideoCreator.java
deleted file mode 100644
index 6f16ce4eb2ea6ac4b4aaea90453001a4385f3a20..0000000000000000000000000000000000000000
--- a/src/main/java/Visualization/VideoCreator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package Visualization;
-
-import MainClasses.Config;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class VideoCreator{
-
-    private static final int MAXIMUM_SIZE = 3000;
-    public static File dir = new File("./visualization/series"); // Default
-    public static final String[] extensions = new String[]{"jpg", "png"};
-    public static final FilenameFilter imageFilter = new FilenameFilter() {
-        @Override
-        public boolean accept(final File dir, String name) {
-            for (final String ext : extensions) {
-                if (name.endsWith("." + ext)) {
-                    return (true);
-                }
-            }
-            return (false);
-        }
-    };
-
-
-    // MainClasses.Main calls this
-    public static void createVideo(String imagesPath, String videoPathAndFile,
-                                   int imgFps, int imgToFpsIncrease, int maxFps, int maxH, int maxW, boolean zoom) {
-        try {
-            System.err.println("\nStarting image resizing");
-            if (zoom) {
-                VideoCreator.resizeImagesWithZoom(imagesPath);
-            } else {
-                VideoCreator.resizeImages(imagesPath, maxH, maxW);
-            }
-
-            File videoFile = new File(videoPathAndFile);
-            if (!videoFile.exists()) {
-                videoFile.createNewFile();
-            }
-
-            try {
-                JCodecPNGtoMP4.generateVideoBySequenceImages(videoFile, imagesPath, "png", imgFps, imgToFpsIncrease, maxFps);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static void resizeImages(String imagesPath, int maxH, int maxW) throws IOException {
-        dir = new File(imagesPath);
-
-        if (dir.isDirectory()) {
-            // reads input images and determines maximum required size
-            int maxHeight = maxH;
-            int maxWidth = maxW;
-
-            if (maxHeight <= 0 || maxWidth <= 0) {
-                int counter = 1;
-                for (final File f : dir.listFiles(imageFilter)) {
-                    BufferedImage inputImage = ImageIO.read(f);
-                    if (maxHeight < inputImage.getHeight()) {
-                        maxHeight = inputImage.getHeight();
-                    }
-                    if (maxWidth < inputImage.getWidth()) {
-                        maxWidth = inputImage.getWidth();
-                    }
-                }
-            }
-
-            // Needed because video is not playable with bigger sizes, mostly a concern for straight line initialization
-            if (maxWidth > MAXIMUM_SIZE) {
-                maxWidth = MAXIMUM_SIZE;
-            }
-            if (maxHeight > MAXIMUM_SIZE) {
-                maxHeight = MAXIMUM_SIZE;
-            }
-
-            // Resizes all images
-            for (final File f : dir.listFiles(imageFilter)) {
-                BufferedImage inputImage = ImageIO.read(f);
-
-                // creates output image
-                BufferedImage outputImage = new BufferedImage(maxWidth,
-                        maxHeight, inputImage.getType());
-
-                // draws input image to the top left corner
-                Graphics2D g2d = outputImage.createGraphics();
-                //TODO The following two lines should be unnecessary
-                //g2d.setColor(Config.imageBackground);
-                //g2d.fillRect(0,0, maxWidth, maxHeight);
-                g2d.drawImage(inputImage, 0, 0, inputImage.getWidth(), inputImage.getHeight(), null);
-                g2d.dispose();
-
-                // overwrites image
-                ImageIO.write(outputImage, "png", f);
-            }
-        }
-    }
-
-    private static void resizeImagesWithZoom(String imagesPath) throws IOException {
-        dir = new File(imagesPath);
-
-        int[] maxHeightAfterIndex = new int[dir.listFiles(imageFilter).length];
-        int[] maxWidthAfterIndex = new int[dir.listFiles(imageFilter).length];
-
-        if (dir.isDirectory()) {
-
-            Path directoryPath = Paths.get(new File(imagesPath).toURI());
-            DirectoryStream<Path> stream = Files.newDirectoryStream(directoryPath, "*.png");
-
-            List<File> filesList = new ArrayList<>();
-            for (Path path : stream) {
-                filesList.add(path.toFile());
-            }
-            File[] files = new File[filesList.size()];
-            filesList.toArray(files);
-
-            JCodecPNGtoMP4.sortByNumber(files);
-            List<Object> list = Arrays.asList(files);
-            Collections.reverse(list);
-            list.toArray(files);
-
-            // reads input images and determines maximum required size after that particular image
-            int currentMaxHeight = 0;
-            int currentMaxWidth = 0;
-            int counter = files.length - 1;
-            for (File f : files) {
-                BufferedImage inputImage = ImageIO.read(f);
-                if (currentMaxHeight < inputImage.getHeight()) {
-                    currentMaxHeight = inputImage.getHeight();
-                }
-                if (currentMaxWidth < inputImage.getWidth()) {
-                    currentMaxWidth = inputImage.getWidth();
-                }
-                maxHeightAfterIndex[counter] = currentMaxHeight;
-                maxWidthAfterIndex[counter] = currentMaxWidth;
-                counter--;
-            }
-
-            // Resizes all images
-            counter = files.length - 1;
-            for (final File f : files) {
-                BufferedImage inputImage = ImageIO.read(f);
-
-                // creates output image
-                BufferedImage outputImage = new BufferedImage(maxWidthAfterIndex[0], // Total maximum W/H
-                        maxHeightAfterIndex[0], inputImage.getType());
-
-                // draws input image to the top left corner
-                Graphics2D g2d = outputImage.createGraphics();
-                //TODO The following two lines should be unnecessary
-                //g2d.setColor(Config.imageBackground);
-                //g2d.fillRect(0,0, maxWidthAfterIndex[0], maxHeightAfterIndex[0]);
-
-                int newHeight = 0;
-                int newWidth = 0;
-
-                // Width expansion to border if height fits accordingly
-                double expansionByWidth = (double) maxWidthAfterIndex[0] / maxWidthAfterIndex[counter];
-                if (maxHeightAfterIndex[counter] * expansionByWidth <= maxHeightAfterIndex[0]) {
-                    newWidth = (int) Math.floor(inputImage.getWidth() * expansionByWidth);
-                    newHeight = (int) Math.floor(inputImage.getHeight() * expansionByWidth);
-                } else {
-                    // otherwise height expansion to border and width according to ratio
-                    double expansionByHeight = (double) maxHeightAfterIndex[0] / maxHeightAfterIndex[counter];
-                    newWidth = (int) Math.floor(inputImage.getWidth() * expansionByHeight);
-                    newHeight = (int) Math.floor(inputImage.getHeight() * expansionByHeight);
-                }
-
-                g2d.drawImage(inputImage, 0, 0, newWidth, newHeight, null);
-                g2d.dispose();
-
-                // overwrites image
-                ImageIO.write(outputImage, "png", f);
-
-                counter--;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingToConsole.java b/src/main/java/Visualizers/BestFoldingToConsole.java
similarity index 92%
rename from src/main/java/Visualization/Visualizers/BestFoldingToConsole.java
rename to src/main/java/Visualizers/BestFoldingToConsole.java
index d5eb289c7f405d65e4fc5d0eedd982418ab32509..d7ebd39bbf517d83806d2100a87261b1dd208325 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingToConsole.java
+++ b/src/main/java/Visualizers/BestFoldingToConsole.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Enums.State;
 import Interfaces.Visualizer;
@@ -6,13 +6,8 @@ import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 
 public class BestFoldingToConsole implements Visualizer {
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingToImage.java b/src/main/java/Visualizers/BestFoldingToImage.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/BestFoldingToImage.java
rename to src/main/java/Visualizers/BestFoldingToImage.java
index 32d4c55a9306a1087af48182dbdda589b5790c98..00d1830228e3b680c50d028363e56fc3d6b9e859 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingToImage.java
+++ b/src/main/java/Visualizers/BestFoldingToImage.java
@@ -1,14 +1,13 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Enums.State;
 import Evaluators.EvaluatorNESW;
-import Interfaces.Evaluator;
 import Interfaces.Visualizer;
 import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
 import java.nio.file.Files;
 import java.nio.file.Paths;
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java b/src/main/java/Visualizers/BestFoldingsToVideo.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java
rename to src/main/java/Visualizers/BestFoldingsToVideo.java
index b94324fea7b7112fd03f19df8a9b316be649d016..9fd7cd8179a233b23a16ae866dd32ea42edade39 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java
+++ b/src/main/java/Visualizers/BestFoldingsToVideo.java
@@ -1,11 +1,10 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Interfaces.Visualizer;
 import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
-import Visualization.JCodecPNGtoMP4;
-import Visualization.VideoCreator;
+import MainClasses.JCodecPNGtoMP4;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
 import java.io.File;
diff --git a/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java b/src/main/java/Visualizers/GenerationOverviewToConsole.java
similarity index 97%
rename from src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
rename to src/main/java/Visualizers/GenerationOverviewToConsole.java
index c6a2195041f5e669b4c9dda16ec9abf159ad8bb3..9ee07807d0911126f4c0fbbed15567df7bdf5456 100644
--- a/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
+++ b/src/main/java/Visualizers/GenerationOverviewToConsole.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Evaluators.EvaluatorNESW;
 import Interfaces.Visualizer;
diff --git a/src/main/java/Visualization/Visualizers/GenerationProgressToLog.java b/src/main/java/Visualizers/GenerationProgressToLog.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/GenerationProgressToLog.java
rename to src/main/java/Visualizers/GenerationProgressToLog.java
index 8feb05324f72f3212c68d9f4f0901c2ff7dfe760..47131d6fee8031aebfedb9b647f459f30f2ba3b2 100644
--- a/src/main/java/Visualization/Visualizers/GenerationProgressToLog.java
+++ b/src/main/java/Visualizers/GenerationProgressToLog.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Evaluators.EvaluatorNESW;
 import Interfaces.Visualizer;