diff --git a/.gitignore b/.gitignore
index b0767304383343e4971d5c1350b28e6c4536a94e..e197e72e75b079845896095474a3469aaff015af 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,5 @@ out/
 *.raw
 *.qcmp
 *.QCMP
+*.MF
 dc.bat
diff --git a/src/main/java/azgracompress/benchmark/CompressionBenchmark.java b/src/main/java/azgracompress/benchmark/CompressionBenchmark.java
deleted file mode 100644
index bc29bea239be7b818fc778f19eb9c6775de9cc77..0000000000000000000000000000000000000000
--- a/src/main/java/azgracompress/benchmark/CompressionBenchmark.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package azgracompress.benchmark;
-
-import azgracompress.cli.CompressionOptionsCLIParser;
-
-public class CompressionBenchmark {
-    public static void runBenchmark(final CompressionOptionsCLIParser options) {
-        Benchmark benchmark = new Benchmark(options);
-        benchmark.startBenchmark();
-//        switch (options.getQuantizationType()) {
-//            case Scalar: {
-//                SQBenchmark sqBenchmark = new SQBenchmark(options);
-//                sqBenchmark.startBenchmark();
-//            }
-//            break;
-//            case Vector1D:
-//            case Vector2D: {
-//                VQBenchmark vqBenchmark = new VQBenchmark(options);
-//                vqBenchmark.startBenchmark(options.getVectorDimension());
-//            }
-//            break;
-//            case Vector3D:
-//            case Invalid: {
-//                System.err.println("Unsupported benchmark type.");
-//            }
-//            break;
-//        }
-    }
-}
diff --git a/src/main/java/azgracompress/io/RawDataIO.java b/src/main/java/azgracompress/io/RawDataIO.java
deleted file mode 100644
index ee7500cfd60604bb959963de6666f59244a3db4b..0000000000000000000000000000000000000000
--- a/src/main/java/azgracompress/io/RawDataIO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package azgracompress.io;
-
-import azgracompress.data.ImageU16;
-import azgracompress.utilities.TypeConverter;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class RawDataIO {
-
-    public static void writeImageU16(final String rawFile,
-                                     final ImageU16 image,
-                                     final boolean littleEndian) throws IOException {
-        byte[] buffer = TypeConverter.unsignedShortArrayToByteArray(image.getData(), littleEndian);
-        writeBytesToFile(rawFile, buffer);
-    }
-
-    public static void writeDataI32(String rawFile,
-                                    int[] differenceData,
-                                    final boolean littleEndian) throws IOException {
-        byte[] buffer = TypeConverter.intArrayToByteArray(differenceData, littleEndian);
-        writeBytesToFile(rawFile, buffer);
-    }
-
-    public static void writeBytesToFile(String rawFile,
-                                        byte[] buffer) throws IOException {
-        FileOutputStream fileStream = new FileOutputStream(rawFile, false);
-        fileStream.write(buffer, 0, buffer.length);
-        fileStream.flush();
-        fileStream.close();
-    }
-
-
-}
diff --git a/src/main/java/azgracompress/DataCompressor.java b/src/main/java/cz/it4i/qcmp/DataCompressor.java
similarity index 90%
rename from src/main/java/azgracompress/DataCompressor.java
rename to src/main/java/cz/it4i/qcmp/DataCompressor.java
index 7cecf190056f318e9b2c04dfa61f321283f27e65..4b12ea38302ec57f9a31b0f17b95e9f837dd0c97 100644
--- a/src/main/java/azgracompress/DataCompressor.java
+++ b/src/main/java/cz/it4i/qcmp/DataCompressor.java
@@ -1,14 +1,14 @@
-package azgracompress;
+package cz.it4i.qcmp;
 
-import azgracompress.benchmark.CompressionBenchmark;
-import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.cli.CliConstants;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.cli.CustomFunctionBase;
-import azgracompress.cli.functions.EntropyCalculation;
-import azgracompress.compression.ImageCompressor;
-import azgracompress.compression.ImageDecompressor;
-import azgracompress.fileformat.FileExtensions;
+import cz.it4i.qcmp.benchmark.CompressionBenchmark;
+import cz.it4i.qcmp.cache.QuantizationCacheManager;
+import cz.it4i.qcmp.cli.CliConstants;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.cli.CustomFunctionBase;
+import cz.it4i.qcmp.cli.functions.EntropyCalculation;
+import cz.it4i.qcmp.compression.ImageCompressor;
+import cz.it4i.qcmp.compression.ImageDecompressor;
+import cz.it4i.qcmp.fileformat.FileExtensions;
 import org.apache.commons.cli.*;
 
 import java.io.IOException;
diff --git a/src/main/java/azgracompress/ScifioWrapper.java b/src/main/java/cz/it4i/qcmp/ScifioWrapper.java
similarity index 95%
rename from src/main/java/azgracompress/ScifioWrapper.java
rename to src/main/java/cz/it4i/qcmp/ScifioWrapper.java
index b6e7d157ea0c5c0a4d889ffa3e4203949824ed17..37bc9c8291a1c3785ce7193dad1ed2899c1f979a 100644
--- a/src/main/java/azgracompress/ScifioWrapper.java
+++ b/src/main/java/cz/it4i/qcmp/ScifioWrapper.java
@@ -1,4 +1,4 @@
-package azgracompress;
+package cz.it4i.qcmp;
 
 import io.scif.FormatException;
 import io.scif.Reader;
@@ -36,7 +36,7 @@ public class ScifioWrapper {
      * @throws FormatException
      */
     public static Reader getReader(final String path) throws IOException, FormatException {
-        SCIFIO scifio = getScifio();
+        final SCIFIO scifio = getScifio();
         //        return scifio.initializer().initializeReader(new FileLocation(path));
         return scifio.initializer().initializeReader(path);
     }
diff --git a/src/main/java/azgracompress/U16.java b/src/main/java/cz/it4i/qcmp/U16.java
similarity index 93%
rename from src/main/java/azgracompress/U16.java
rename to src/main/java/cz/it4i/qcmp/U16.java
index 4f79d22cdf0f1a8c6eee38067f579105fa13973e..b85d7ce0f1bb834b0076d350ad116f46e903f82f 100644
--- a/src/main/java/azgracompress/U16.java
+++ b/src/main/java/cz/it4i/qcmp/U16.java
@@ -1,4 +1,4 @@
-package azgracompress;
+package cz.it4i.qcmp;
 
 public class U16 {
     public static final int Min = 0x0;
diff --git a/src/main/java/azgracompress/benchmark/Benchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java
similarity index 62%
rename from src/main/java/azgracompress/benchmark/Benchmark.java
rename to src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java
index 91fb4fd3c1d63c935655fd57fe3d72803c13ee9a..117259ddf6704a5c36f96730554c1a056aefee88 100644
--- a/src/main/java/azgracompress/benchmark/Benchmark.java
+++ b/src/main/java/cz/it4i/qcmp/benchmark/Benchmark.java
@@ -1,16 +1,16 @@
-package azgracompress.benchmark;
-
-import azgracompress.U16;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.compression.ImageCompressor;
-import azgracompress.compression.ImageDecompressor;
-import azgracompress.data.ImageU16Dataset;
-import azgracompress.io.FileInputData;
-import azgracompress.io.RawDataIO;
-import azgracompress.io.loader.IPlaneLoader;
-import azgracompress.io.loader.PlaneLoaderFactory;
-import azgracompress.utilities.TypeConverter;
-import azgracompress.utilities.Utils;
+package cz.it4i.qcmp.benchmark;
+
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.compression.ImageCompressor;
+import cz.it4i.qcmp.compression.ImageDecompressor;
+import cz.it4i.qcmp.data.ImageU16Dataset;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.io.RawDataIO;
+import cz.it4i.qcmp.io.loader.IPlaneLoader;
+import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
+import cz.it4i.qcmp.utilities.TypeConverter;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -19,33 +19,33 @@ import java.util.Optional;
 public class Benchmark extends BenchmarkBase {
 
 
-    protected Benchmark(CompressionOptionsCLIParser options) {
+    protected Benchmark(final CompressionOptionsCLIParser options) {
         super(options);
     }
 
     @Override
     public void startBenchmark() {
         assert (options.getInputDataInfo().isPlaneIndexSet());
-        CompressionOptionsCLIParser compressOps;
-        CompressionOptionsCLIParser decompressOps;
+        final CompressionOptionsCLIParser compressOps;
+        final CompressionOptionsCLIParser decompressOps;
         try {
             // NOTE: This works, right?
             compressOps = (CompressionOptionsCLIParser) options.clone();
             decompressOps = (CompressionOptionsCLIParser) options.clone();
-        } catch (CloneNotSupportedException e) {
+        } catch (final CloneNotSupportedException e) {
             System.err.println(e.getMessage());
             e.printStackTrace();
             return;
         }
         // dirCreated is ignored.
-        boolean dirCreated = new File(options.getOutputFilePath()).mkdirs();
+        final boolean dirCreated = new File(options.getOutputFilePath()).mkdirs();
 
         final String qcmpFilePath = getFileNamePathIntoOutDir(String.format(COMPRESSED_FILE_TEMPLATE,
-                options.getInputDataInfo().getPlaneIndex(),
-                codebookSize));
+                                                                            options.getInputDataInfo().getPlaneIndex(),
+                                                                            codebookSize));
 
         compressOps.setOutputFilePath(qcmpFilePath);
-        ImageCompressor compressor = new ImageCompressor(compressOps);
+        final ImageCompressor compressor = new ImageCompressor(compressOps);
         if (!compressor.compress()) {
             System.err.println("Errors occurred during compression.");
             return;
@@ -54,11 +54,11 @@ public class Benchmark extends BenchmarkBase {
         decompressOps.setInputDataInfo(new FileInputData(qcmpFilePath));
 
         final String decompressedFile = getFileNamePathIntoOutDir(String.format(QUANTIZED_FILE_TEMPLATE,
-                options.getInputDataInfo().getPlaneIndex(),
-                codebookSize));
+                                                                                options.getInputDataInfo().getPlaneIndex(),
+                                                                                codebookSize));
 
         decompressOps.setOutputFilePath(decompressedFile);
-        ImageDecompressor decompressor = new ImageDecompressor(decompressOps);
+        final ImageDecompressor decompressor = new ImageDecompressor(decompressOps);
 
         final Optional<ImageU16Dataset> maybeDataset = decompressor.decompressInMemory();
         if (!maybeDataset.isPresent()) {
@@ -66,11 +66,11 @@ public class Benchmark extends BenchmarkBase {
             return;
         }
 
-        int[] originalData;
+        final int[] originalData;
         try {
             final IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
             originalData = loader.loadPlaneData(options.getInputDataInfo().getPlaneIndex());
-        } catch (Exception e) {
+        } catch (final Exception e) {
             System.err.println("Failed to get plane loader. " + e.getMessage());
             e.printStackTrace();
             return;
@@ -86,12 +86,12 @@ public class Benchmark extends BenchmarkBase {
         final int[] absDifferenceData = Utils.asAbsoluteValues(diffArray);
 
         final String diffFilePath = getFileNamePathIntoOutDir(String.format(DIFFERENCE_FILE_TEMPLATE,
-                options.getInputDataInfo().getPlaneIndex(),
-                codebookSize));
+                                                                            options.getInputDataInfo().getPlaneIndex(),
+                                                                            codebookSize));
 
         final String absDiffFilePath = getFileNamePathIntoOutDir(String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE,
-                options.getInputDataInfo().getPlaneIndex(),
-                codebookSize));
+                                                                               options.getInputDataInfo().getPlaneIndex(),
+                                                                               codebookSize));
 
         try {
             // NOTE(Moravec): Use little endian so that gnuplot can read the array.
@@ -100,7 +100,7 @@ public class Benchmark extends BenchmarkBase {
 
             RawDataIO.writeDataI32(diffFilePath, diffArray, true);
             System.out.println("Saved difference to: " + absDiffFilePath);
-        } catch (IOException e) {
+        } catch (final IOException e) {
             System.err.println("Failed to save difference.");
             e.printStackTrace();
         }
diff --git a/src/main/java/azgracompress/benchmark/BenchmarkBase.java b/src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java
similarity index 84%
rename from src/main/java/azgracompress/benchmark/BenchmarkBase.java
rename to src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java
index 43c1e2f8818b71736c40e0bb542bc26420551fcf..2e7cf835fcae750b43316e80823a8d43c33cfbc1 100644
--- a/src/main/java/azgracompress/benchmark/BenchmarkBase.java
+++ b/src/main/java/cz/it4i/qcmp/benchmark/BenchmarkBase.java
@@ -1,13 +1,13 @@
-package azgracompress.benchmark;
+package cz.it4i.qcmp.benchmark;
 
-import azgracompress.compression.CompressionOptions;
-import azgracompress.io.InputData;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.data.ImageU16;
-import azgracompress.data.V3i;
-import azgracompress.io.RawDataIO;
-import azgracompress.quantization.QTrainIteration;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.compression.CompressionOptions;
+import cz.it4i.qcmp.data.ImageU16;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.InputData;
+import cz.it4i.qcmp.io.RawDataIO;
+import cz.it4i.qcmp.quantization.QTrainIteration;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -118,12 +118,12 @@ abstract class BenchmarkBase {
      * @return True if file was saved.
      */
     protected boolean saveQuantizedPlaneData(final int[] data, final String filename) {
-        ImageU16 img = new ImageU16(rawImageDims.getX(), rawImageDims.getY(), data);
+        final ImageU16 img = new ImageU16(rawImageDims.getX(), rawImageDims.getY(), data);
         try {
             // NOTE(Moravec): Use big endian so that FIJI can read the image.
             RawDataIO.writeImageU16(getFileNamePathIntoOutDir(filename), img, false);
             System.out.println(String.format("Saved %s", filename));
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
             return false;
         }
@@ -146,9 +146,9 @@ abstract class BenchmarkBase {
         final String diffFilePath = getFileNamePathIntoOutDir(diffFile);
         final String absDiffFilePath = getFileNamePathIntoOutDir(absDiffFile);
 
-        ImageU16 img = new ImageU16(rawImageDims.getX(),
-                rawImageDims.getY(),
-                absDifferenceData);
+        final ImageU16 img = new ImageU16(rawImageDims.getX(),
+                                          rawImageDims.getY(),
+                                          absDifferenceData);
         try {
             // NOTE(Moravec): Use little endian so that gnuplot can read the array.
             RawDataIO.writeImageU16(absDiffFilePath, img, true);
@@ -156,7 +156,7 @@ abstract class BenchmarkBase {
 
             RawDataIO.writeDataI32(diffFilePath, differenceData, true);
             System.out.println("Saved difference to: " + absDiffFilePath);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
             System.err.println("Failed to save difference.");
             return false;
@@ -174,21 +174,21 @@ abstract class BenchmarkBase {
     protected void saveQTrainLog(final String filename, final QTrainIteration[] trainingLog) {
         final String CSV_HEADER = "It;MSE;PSNR\n";
         try {
-            FileOutputStream fileStream = new FileOutputStream(getFileNamePathIntoOutDir(filename));
-            OutputStreamWriter writer = new OutputStreamWriter(fileStream);
+            final FileOutputStream fileStream = new FileOutputStream(getFileNamePathIntoOutDir(filename));
+            final OutputStreamWriter writer = new OutputStreamWriter(fileStream);
 
             writer.write(CSV_HEADER);
 
             for (final QTrainIteration it : trainingLog) {
                 writer.write(String.format("%d;%.5f;%.5f\n",
-                        it.getIteration(),
-                        it.getMse(),
-                        it.getPSNR()));
+                                           it.getIteration(),
+                                           it.getMse(),
+                                           it.getPSNR()));
             }
             writer.flush();
             fileStream.flush();
             fileStream.close();
-        } catch (IOException ioE) {
+        } catch (final IOException ioE) {
             ioE.printStackTrace();
             System.err.println("Failed to save QTtrain log.");
         }
diff --git a/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java
new file mode 100644
index 0000000000000000000000000000000000000000..5370c35eeee212695c29152940ce9fc1c8ec4699
--- /dev/null
+++ b/src/main/java/cz/it4i/qcmp/benchmark/CompressionBenchmark.java
@@ -0,0 +1,28 @@
+package cz.it4i.qcmp.benchmark;
+
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+
+public class CompressionBenchmark {
+    public static void runBenchmark(final CompressionOptionsCLIParser options) {
+        final Benchmark benchmark = new Benchmark(options);
+        benchmark.startBenchmark();
+        //        switch (options.getQuantizationType()) {
+        //            case Scalar: {
+        //                SQBenchmark sqBenchmark = new SQBenchmark(options);
+        //                sqBenchmark.startBenchmark();
+        //            }
+        //            break;
+        //            case Vector1D:
+        //            case Vector2D: {
+        //                VQBenchmark vqBenchmark = new VQBenchmark(options);
+        //                vqBenchmark.startBenchmark(options.getVectorDimension());
+        //            }
+        //            break;
+        //            case Vector3D:
+        //            case Invalid: {
+        //                System.err.println("Unsupported benchmark type.");
+        //            }
+        //            break;
+        //        }
+    }
+}
diff --git a/src/main/java/azgracompress/benchmark/SQBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java
similarity index 76%
rename from src/main/java/azgracompress/benchmark/SQBenchmark.java
rename to src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java
index f423cc5d322914da509eb989b10ea16d04613cd2..a90c39df9e4534578e3a5e16539ca96818c702b5 100644
--- a/src/main/java/azgracompress/benchmark/SQBenchmark.java
+++ b/src/main/java/cz/it4i/qcmp/benchmark/SQBenchmark.java
@@ -1,16 +1,16 @@
-package azgracompress.benchmark;
-
-import azgracompress.U16;
-import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.compression.CompressionOptions;
-import azgracompress.io.loader.IPlaneLoader;
-import azgracompress.io.loader.PlaneLoaderFactory;
-import azgracompress.quantization.QTrainIteration;
-import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization;
-import azgracompress.quantization.scalar.SQCodebook;
-import azgracompress.quantization.scalar.ScalarQuantizer;
-import azgracompress.utilities.Utils;
+package cz.it4i.qcmp.benchmark;
+
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.cache.QuantizationCacheManager;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.compression.CompressionOptions;
+import cz.it4i.qcmp.io.loader.IPlaneLoader;
+import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
+import cz.it4i.qcmp.quantization.QTrainIteration;
+import cz.it4i.qcmp.quantization.scalar.LloydMaxU16ScalarQuantization;
+import cz.it4i.qcmp.quantization.scalar.SQCodebook;
+import cz.it4i.qcmp.quantization.scalar.ScalarQuantizer;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -25,10 +25,10 @@ public class SQBenchmark extends BenchmarkBase {
 
     @Override
     public void startBenchmark() {
-        IPlaneLoader planeLoader;
+        final IPlaneLoader planeLoader;
         try {
             planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
-        } catch (Exception e) {
+        } catch (final Exception e) {
             e.printStackTrace();
             System.err.println("Unable to create SCIFIO reader.");
             return;
@@ -37,13 +37,13 @@ public class SQBenchmark extends BenchmarkBase {
         if (planes.length < 1) {
             return;
         }
-        boolean dirCreated = new File(this.outputDirectory).mkdirs();
+        final boolean dirCreated = new File(this.outputDirectory).mkdirs();
         System.out.println(String.format("|CODEBOOK| = %d", codebookSize));
         ScalarQuantizer quantizer = null;
 
         if (options.getCodebookType() == CompressionOptions.CodebookType.Global) {
             System.out.println("Loading codebook from cache");
-            QuantizationCacheManager cacheManager = new QuantizationCacheManager(cacheFolder);
+            final QuantizationCacheManager cacheManager = new QuantizationCacheManager(cacheFolder);
             final SQCodebook codebook = cacheManager.loadSQCodebook(inputFile, codebookSize);
 
             if (codebook == null) {
@@ -59,7 +59,7 @@ public class SQBenchmark extends BenchmarkBase {
             final int[] middlePlaneData;
             try {
                 middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 e.printStackTrace();
                 System.err.println("Failed to load middle plane data.");
                 return;
@@ -74,7 +74,7 @@ public class SQBenchmark extends BenchmarkBase {
             final int[] planeData;
             try {
                 planeData = planeLoader.loadPlaneData(planeIndex);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 e.printStackTrace();
                 System.err.println("Failed to load plane data.");
                 return;
@@ -87,8 +87,8 @@ public class SQBenchmark extends BenchmarkBase {
             final String quantizedFile = String.format(QUANTIZED_FILE_TEMPLATE, planeIndex, codebookSize);
             final String diffFile = String.format(DIFFERENCE_FILE_TEMPLATE, planeIndex, codebookSize);
             final String absoluteDiffFile = String.format(ABSOLUTE_DIFFERENCE_FILE_TEMPLATE,
-                    planeIndex,
-                    codebookSize);
+                                                          planeIndex,
+                                                          codebookSize);
             final String trainLogFile = String.format(TRAIN_FILE_TEMPLATE, planeIndex, codebookSize);
 
             if (options.getCodebookType() == CompressionOptions.CodebookType.Individual) {
@@ -121,10 +121,10 @@ public class SQBenchmark extends BenchmarkBase {
     private void saveCentroids(final int[] centroids, final String centroidsFile) {
         final String outFile = getFileNamePathIntoOutDir(centroidsFile);
         try {
-            FileOutputStream fileStream = new FileOutputStream(outFile);
-            OutputStreamWriter writer = new OutputStreamWriter(fileStream);
+            final FileOutputStream fileStream = new FileOutputStream(outFile);
+            final OutputStreamWriter writer = new OutputStreamWriter(fileStream);
 
-            StringBuilder sb = new StringBuilder();
+            final StringBuilder sb = new StringBuilder();
 
 
             for (final int entry : centroids) {
@@ -137,7 +137,7 @@ public class SQBenchmark extends BenchmarkBase {
             writer.flush();
             fileStream.flush();
             fileStream.close();
-        } catch (IOException ioE) {
+        } catch (final IOException ioE) {
             ioE.printStackTrace();
             System.err.println("Failed to save codebook vectors.");
         }
@@ -146,8 +146,8 @@ public class SQBenchmark extends BenchmarkBase {
     private ScalarQuantizer trainLloydMaxQuantizer(final int[] data,
                                                    final int codebookSize,
                                                    final String trainLogFile) {
-        LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(data, codebookSize, workerCount);
-        QTrainIteration[] trainingReport = lloydMax.train();
+        final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(data, codebookSize, workerCount);
+        final QTrainIteration[] trainingReport = lloydMax.train();
         if (trainLogFile != null) {
             saveQTrainLog(trainLogFile, trainingReport);
             System.out.println("Saved the train log file to: " + trainLogFile);
diff --git a/src/main/java/azgracompress/benchmark/VQBenchmark.java b/src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java
similarity index 95%
rename from src/main/java/azgracompress/benchmark/VQBenchmark.java
rename to src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java
index 5c9257cb24d181e890543ec64791fc91000127c6..33e0a361be7dc68fc882ad89624fde17234caf5f 100644
--- a/src/main/java/azgracompress/benchmark/VQBenchmark.java
+++ b/src/main/java/cz/it4i/qcmp/benchmark/VQBenchmark.java
@@ -1,10 +1,10 @@
-package azgracompress.benchmark;
+package cz.it4i.qcmp.benchmark;
 
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.data.Block;
-import azgracompress.data.ImageU16;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.data.Block;
+import cz.it4i.qcmp.data.ImageU16;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
 
 public class VQBenchmark extends BenchmarkBase {
 
@@ -19,7 +19,7 @@ public class VQBenchmark extends BenchmarkBase {
 
     private ImageU16 reconstructImageFromQuantizedVectors(final int[][] vectors,
                                                           final V2i qVector) {
-        Block reconstructedChunk = new Block(new V2i(rawImageDims.getX(), rawImageDims.getY()));
+        final Block reconstructedChunk = new Block(new V2i(rawImageDims.getX(), rawImageDims.getY()));
         if (qVector.getY() > 1) {
             reconstructedChunk.reconstructFrom2DVectors(vectors, qVector);
         } else {
diff --git a/src/main/java/azgracompress/cache/CacheFileHeader.java b/src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java
similarity index 97%
rename from src/main/java/azgracompress/cache/CacheFileHeader.java
rename to src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java
index d55ef41e79a6d208c05f31013548e16dc9cc4464..888c0c2d0d016ad466baab3240b587b4d33b8a1d 100644
--- a/src/main/java/azgracompress/cache/CacheFileHeader.java
+++ b/src/main/java/cz/it4i/qcmp/cache/CacheFileHeader.java
@@ -1,9 +1,9 @@
-package azgracompress.cache;
+package cz.it4i.qcmp.cache;
 
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/cache/ICacheFile.java b/src/main/java/cz/it4i/qcmp/cache/ICacheFile.java
similarity index 94%
rename from src/main/java/azgracompress/cache/ICacheFile.java
rename to src/main/java/cz/it4i/qcmp/cache/ICacheFile.java
index e1e519153be3eabb5418c9a97d56a8cb35c4f6ad..88a441f675bde0416704c167112d945e315b9668 100644
--- a/src/main/java/azgracompress/cache/ICacheFile.java
+++ b/src/main/java/cz/it4i/qcmp/cache/ICacheFile.java
@@ -1,4 +1,4 @@
-package azgracompress.cache;
+package cz.it4i.qcmp.cache;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/cache/QuantizationCacheManager.java b/src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java
similarity index 98%
rename from src/main/java/azgracompress/cache/QuantizationCacheManager.java
rename to src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java
index 0224eb7b1af40cbd8d97599c28d1fcbd77248a40..52c6feef8e3d5388cc564be64d80b3ac11776be2 100644
--- a/src/main/java/azgracompress/cache/QuantizationCacheManager.java
+++ b/src/main/java/cz/it4i/qcmp/cache/QuantizationCacheManager.java
@@ -1,10 +1,10 @@
-package azgracompress.cache;
+package cz.it4i.qcmp.cache;
 
-import azgracompress.compression.CompressionOptions;
-import azgracompress.data.V3i;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.quantization.scalar.SQCodebook;
-import azgracompress.quantization.vector.VQCodebook;
+import cz.it4i.qcmp.compression.CompressionOptions;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.quantization.scalar.SQCodebook;
+import cz.it4i.qcmp.quantization.vector.VQCodebook;
 
 import java.io.*;
 import java.util.ArrayList;
diff --git a/src/main/java/azgracompress/cache/SQCacheFile.java b/src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java
similarity index 96%
rename from src/main/java/azgracompress/cache/SQCacheFile.java
rename to src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java
index 99b78c39308f78e71dbd9e03970a7f673fa2555e..5277bbade5c378a4698370f81ccd070544b8fefc 100644
--- a/src/main/java/azgracompress/cache/SQCacheFile.java
+++ b/src/main/java/cz/it4i/qcmp/cache/SQCacheFile.java
@@ -1,6 +1,6 @@
-package azgracompress.cache;
+package cz.it4i.qcmp.cache;
 
-import azgracompress.quantization.scalar.SQCodebook;
+import cz.it4i.qcmp.quantization.scalar.SQCodebook;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/cache/VQCacheFile.java b/src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java
similarity index 97%
rename from src/main/java/azgracompress/cache/VQCacheFile.java
rename to src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java
index feb842f80101f465f6d4ab08a5317818c90641af..de109523f9cb0785014c6221b859b860a1b99904 100644
--- a/src/main/java/azgracompress/cache/VQCacheFile.java
+++ b/src/main/java/cz/it4i/qcmp/cache/VQCacheFile.java
@@ -1,6 +1,6 @@
-package azgracompress.cache;
+package cz.it4i.qcmp.cache;
 
-import azgracompress.quantization.vector.VQCodebook;
+import cz.it4i.qcmp.quantization.vector.VQCodebook;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/cli/CliConstants.java b/src/main/java/cz/it4i/qcmp/cli/CliConstants.java
similarity index 98%
rename from src/main/java/azgracompress/cli/CliConstants.java
rename to src/main/java/cz/it4i/qcmp/cli/CliConstants.java
index 586737b42eda2ea07d1ae3152e73edd291fe3555..9d327490e1e96c86c6a84302cbaed951835cf983 100644
--- a/src/main/java/azgracompress/cli/CliConstants.java
+++ b/src/main/java/cz/it4i/qcmp/cli/CliConstants.java
@@ -1,4 +1,4 @@
-package azgracompress.cli;
+package cz.it4i.qcmp.cli;
 
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionGroup;
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull;
 
 public class CliConstants {
 
-    public static final String MAIN_HELP = "azgracompress.DataCompressor [options] input";
+    public static final String MAIN_HELP = "DataCompressor [options] input";
 
     public static final String HELP_SHORT = "h";
     public static final String HELP_LONG = "help";
diff --git a/src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
similarity index 91%
rename from src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java
rename to src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
index 9737e72c41275d8eba3ce785d73dc0afa0e59af7..c36aef2a4426a1f5d3e23a6dc88b210a96c992d0 100644
--- a/src/main/java/azgracompress/cli/CompressionOptionsCLIParser.java
+++ b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
@@ -1,15 +1,15 @@
-package azgracompress.cli;
-
-import azgracompress.ScifioWrapper;
-import azgracompress.compression.CompressionOptions;
-import azgracompress.compression.CompressorDecompressorBase;
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.fileformat.FileExtensions;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.io.FileInputData;
-import azgracompress.io.InputData;
+package cz.it4i.qcmp.cli;
+
+import cz.it4i.qcmp.ScifioWrapper;
+import cz.it4i.qcmp.compression.CompressionOptions;
+import cz.it4i.qcmp.compression.CompressorDecompressorBase;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.fileformat.FileExtensions;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.io.InputData;
 import io.scif.FormatException;
 import io.scif.Plane;
 import io.scif.Reader;
@@ -44,7 +44,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      *
      * @param cmdInput Command line arguments.
      */
-    public CompressionOptionsCLIParser(CommandLine cmdInput) {
+    public CompressionOptionsCLIParser(final CommandLine cmdInput) {
         parseCLI(cmdInput);
     }
 
@@ -110,7 +110,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param cmd Provided command line arguments.
      */
     private void parseCLI(final CommandLine cmd) {
-        StringBuilder errorBuilder = new StringBuilder("Errors:\n");
+        final StringBuilder errorBuilder = new StringBuilder("Errors:\n");
         parseErrorOccurred = false;
 
         parseProgramMethod(cmd, errorBuilder);
@@ -140,7 +140,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
 
         if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) {
             final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG);
-            Optional<Integer> pr = ParseUtils.tryParseInt(wcString);
+            final Optional<Integer> pr = ParseUtils.tryParseInt(wcString);
             if (pr.isPresent()) {
                 setWorkerCount(pr.get());
             } else {
@@ -170,7 +170,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param inputFileArguments Input file info strings.
      */
 
-    private void parseInputFilePart(StringBuilder errorBuilder, final String[] inputFileArguments) {
+    private void parseInputFilePart(final StringBuilder errorBuilder, final String[] inputFileArguments) {
 
         if (inputFileArguments.length < 1) {
             parseErrorOccurred = true;
@@ -203,12 +203,12 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
     }
 
 
-    private void parseSCIFIOFileArguments(StringBuilder errorBuilder, final String[] inputFileArguments) {
+    private void parseSCIFIOFileArguments(final StringBuilder errorBuilder, final String[] inputFileArguments) {
         getInputDataInfo().setDataLoaderType(InputData.DataLoaderType.SCIFIOLoader);
-        Reader reader;
+        final Reader reader;
         try {
             reader = ScifioWrapper.getReader(getInputDataInfo().getFilePath());
-        } catch (IOException | FormatException e) {
+        } catch (final IOException | FormatException e) {
             parseErrorOccurred = true;
             errorBuilder.append("Failed to get SCIFIO reader for file.\n");
             errorBuilder.append(e.getMessage());
@@ -228,9 +228,10 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             errorBuilder.append("Too many planes.\n");
         }
 
-        long planeWidth, planeHeight;
+        final long planeWidth;
+        final long planeHeight;
         try {
-            Plane plane = reader.openPlane(0, 0);
+            final Plane plane = reader.openPlane(0, 0);
             planeWidth = plane.getLengths()[0];
             planeHeight = plane.getLengths()[1];
 
@@ -243,7 +244,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             }
 
 
-        } catch (FormatException | IOException e) {
+        } catch (final FormatException | IOException e) {
             parseErrorOccurred = true;
             errorBuilder.append("Unable to open first plane of the first image.\n")
                     .append(e.getMessage());
@@ -261,7 +262,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
         }
     }
 
-    private void parseRawFileArguments(StringBuilder errorBuilder, String[] inputFileArguments) {
+    private void parseRawFileArguments(final StringBuilder errorBuilder, final String[] inputFileArguments) {
         // We require the file path and dimensions, like input.raw 1920x1080x5
         // First argument is input file name.
         if (inputFileArguments.length < 2) {
@@ -296,13 +297,13 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param inputFileArguments       Input file arguments.
      * @param inputFileArgumentsOffset Offset of the plane argument.
      */
-    private void parseInputFilePlaneOptions(StringBuilder errorBuilder,
+    private void parseInputFilePlaneOptions(final StringBuilder errorBuilder,
                                             final String[] inputFileArguments,
                                             final int inputFileArgumentsOffset) {
-        int rangeSeparatorIndex = inputFileArguments[inputFileArgumentsOffset].indexOf("-");
+        final int rangeSeparatorIndex = inputFileArguments[inputFileArgumentsOffset].indexOf("-");
         if (rangeSeparatorIndex != -1) {
 
-            Optional<Range<Integer>> parsedRange =
+            final Optional<Range<Integer>> parsedRange =
                     ParseUtils.tryParseRange(inputFileArguments[inputFileArgumentsOffset], '-');
 
             if (!parsedRange.isPresent()) {
@@ -332,7 +333,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param cmd          Command line arguments.
      * @param errorBuilder String error builder.
      */
-    private void parseBitsPerPixel(CommandLine cmd, StringBuilder errorBuilder) {
+    private void parseBitsPerPixel(final CommandLine cmd, final StringBuilder errorBuilder) {
         if (cmd.hasOption(CliConstants.BITS_LONG)) {
             final String bitsString = cmd.getOptionValue(CliConstants.BITS_LONG);
             final Optional<Integer> parseResult = ParseUtils.tryParseInt(bitsString);
@@ -365,7 +366,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param cmd          Command line arguments.
      * @param errorBuilder String error builder.
      */
-    private void parseCompressionType(CommandLine cmd, StringBuilder errorBuilder) {
+    private void parseCompressionType(final CommandLine cmd, final StringBuilder errorBuilder) {
         if (hasQuantizationType(method)) {
             if (cmd.hasOption(CliConstants.SCALAR_QUANTIZATION_LONG)) {
                 setQuantizationType(QuantizationType.Scalar);
@@ -418,7 +419,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
      * @param cmd          Command line arguments.
      * @param errorBuilder String error builder.
      */
-    private void parseProgramMethod(CommandLine cmd, StringBuilder errorBuilder) {
+    private void parseProgramMethod(final CommandLine cmd, final StringBuilder errorBuilder) {
         if (cmd.hasOption(CliConstants.HELP_LONG)) {
             method = ProgramMethod.PrintHelp;
         } else if (cmd.hasOption(CliConstants.COMPRESS_LONG)) {
@@ -453,7 +454,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
     }
 
     public String report() {
-        StringBuilder sb = new StringBuilder();
+        final StringBuilder sb = new StringBuilder();
 
         sb.append("Method: ");
         switch (method) {
diff --git a/src/main/java/azgracompress/cli/CustomFunctionBase.java b/src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java
similarity index 76%
rename from src/main/java/azgracompress/cli/CustomFunctionBase.java
rename to src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java
index 8af89921244bb6435f7f289d8771b425f16369cb..e5f143b55eb19d0aa44e16815c343493e50134f9 100644
--- a/src/main/java/azgracompress/cli/CustomFunctionBase.java
+++ b/src/main/java/cz/it4i/qcmp/cli/CustomFunctionBase.java
@@ -1,18 +1,20 @@
-package azgracompress.cli;
+package cz.it4i.qcmp.cli;
 
 public abstract class CustomFunctionBase {
     protected final CompressionOptionsCLIParser options;
 
     /**
      * Base constructor with parsed CLI options.
+     *
      * @param options Parsed cli options.
      */
-    public CustomFunctionBase(CompressionOptionsCLIParser options) {
+    public CustomFunctionBase(final CompressionOptionsCLIParser options) {
         this.options = options;
     }
 
     /**
      * Run custom function.
+     *
      * @return True if no errors occurred.
      */
     public abstract boolean run();
diff --git a/src/main/java/azgracompress/cli/ParseUtils.java b/src/main/java/cz/it4i/qcmp/cli/ParseUtils.java
similarity index 94%
rename from src/main/java/azgracompress/cli/ParseUtils.java
rename to src/main/java/cz/it4i/qcmp/cli/ParseUtils.java
index 7ebf9675b2c6e2e973a1b334436683e5bb18a8d5..5aa279b5ab6c5c3628857689bde6384f66e624d7 100644
--- a/src/main/java/azgracompress/cli/ParseUtils.java
+++ b/src/main/java/cz/it4i/qcmp/cli/ParseUtils.java
@@ -1,8 +1,8 @@
-package azgracompress.cli;
+package cz.it4i.qcmp.cli;
 
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
 
 import java.util.Optional;
 
@@ -21,7 +21,7 @@ public abstract class ParseUtils {
     public static Optional<Integer> tryParseInt(final String string) {
         try {
             return Optional.of(Integer.parseInt(string));
-        } catch (NumberFormatException ignored) {
+        } catch (final NumberFormatException ignored) {
             return Optional.empty();
         }
     }
diff --git a/src/main/java/azgracompress/cli/ProgramMethod.java b/src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java
similarity index 84%
rename from src/main/java/azgracompress/cli/ProgramMethod.java
rename to src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java
index ba97c0f54e1fa2964d5f3033e8a9394d09d21d5b..73d3abdd417bb37671f4984550b452703172cc4a 100644
--- a/src/main/java/azgracompress/cli/ProgramMethod.java
+++ b/src/main/java/cz/it4i/qcmp/cli/ProgramMethod.java
@@ -1,4 +1,4 @@
-package azgracompress.cli;
+package cz.it4i.qcmp.cli;
 
 public enum ProgramMethod {
     Compress,
diff --git a/src/main/java/azgracompress/cli/functions/EntropyCalculation.java b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java
similarity index 70%
rename from src/main/java/azgracompress/cli/functions/EntropyCalculation.java
rename to src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java
index 1110002ad93165a7211332b3a55074d33479b44b..d99e1b3a7372333d19beb3d0bc3b2000805a4938 100644
--- a/src/main/java/azgracompress/cli/functions/EntropyCalculation.java
+++ b/src/main/java/cz/it4i/qcmp/cli/functions/EntropyCalculation.java
@@ -1,10 +1,10 @@
-package azgracompress.cli.functions;
+package cz.it4i.qcmp.cli.functions;
 
-import azgracompress.cli.CustomFunctionBase;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.io.loader.IPlaneLoader;
-import azgracompress.io.loader.PlaneLoaderFactory;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.cli.CustomFunctionBase;
+import cz.it4i.qcmp.io.loader.IPlaneLoader;
+import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.IOException;
 
@@ -14,16 +14,16 @@ public class EntropyCalculation extends CustomFunctionBase {
      *
      * @param options Parsed cli options.
      */
-    public EntropyCalculation(CompressionOptionsCLIParser options) {
+    public EntropyCalculation(final CompressionOptionsCLIParser options) {
         super(options);
     }
 
     @Override
     public boolean run() {
-        IPlaneLoader loader;
+        final IPlaneLoader loader;
         try {
             loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
-        } catch (Exception ex) {
+        } catch (final Exception ex) {
             System.err.println("EntropyCalculation::run() - Unable to get plane loader. " + ex.getMessage());
             return false;
         }
@@ -32,7 +32,7 @@ public class EntropyCalculation extends CustomFunctionBase {
             final int[] planeData;
             try {
                 planeData = loader.loadPlaneData(planeIndex);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 System.err.printf("Failed to load plane %d data. %s", planeIndex, e.getMessage());
                 return false;
             }
diff --git a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
similarity index 90%
rename from src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java
rename to src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
index 161bc151fb65b41b539ae08a4141bb1bd8c8b301..17fee7f1276a5bc57ba8d9d866d7eb91ab7e8a43 100644
--- a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java
+++ b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
@@ -1,11 +1,11 @@
-package azgracompress.cli.functions;
+package cz.it4i.qcmp.cli.functions;
 
-import azgracompress.cli.CustomFunctionBase;
-import azgracompress.cli.CompressionOptionsCLIParser;
-import azgracompress.data.V3i;
-import azgracompress.io.FileInputData;
-import azgracompress.io.loader.RawDataLoader;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.cli.CompressionOptionsCLIParser;
+import cz.it4i.qcmp.cli.CustomFunctionBase;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.io.loader.RawDataLoader;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -13,7 +13,7 @@ import java.io.OutputStreamWriter;
 import java.util.Arrays;
 
 public class MeasurePlaneErrorFunction extends CustomFunctionBase {
-    public MeasurePlaneErrorFunction(CompressionOptionsCLIParser options) {
+    public MeasurePlaneErrorFunction(final CompressionOptionsCLIParser options) {
         super(options);
     }
 
@@ -122,17 +122,17 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
         final V3i dims = new V3i(1041, 996, 946);
         final int planePixelCount = dims.getX() * dims.getY();
 
-        PlaneError[] planeErrors = new PlaneError[dims.getZ()];
+        final PlaneError[] planeErrors = new PlaneError[dims.getZ()];
 
-        FileInputData refFileInfo = new FileInputData(compFile);
+        final FileInputData refFileInfo = new FileInputData(compFile);
         refFileInfo.setDimension(dims);
-        FileInputData compFileInfo = new FileInputData(compressedFile);
+        final FileInputData compFileInfo = new FileInputData(compressedFile);
         compFileInfo.setDimension(dims);
 
         final RawDataLoader refPlaneloader = new RawDataLoader(refFileInfo);
         final RawDataLoader compPlaneloader = new RawDataLoader(compFileInfo);
 
-        Thread[] workers = new Thread[workerCount];
+        final Thread[] workers = new Thread[workerCount];
         final int workSize = dims.getZ() / workerCount;
 
         for (int wId = 0; wId < workerCount; wId++) {
@@ -147,7 +147,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
                     try {
                         originalPlaneData = refPlaneloader.loadPlaneData(planeIndex);
                         compressedPlaneData = compPlaneloader.loadPlaneData(planeIndex);
-                    } catch (IOException e) {
+                    } catch (final IOException e) {
                         e.printStackTrace();
                         break;
                     }
@@ -169,12 +169,12 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
             for (int wId = 0; wId < workerCount; wId++) {
                 workers[wId].join();
             }
-        } catch (InterruptedException e) {
+        } catch (final InterruptedException e) {
             e.printStackTrace();
         }
 
-        try (FileOutputStream fos = new FileOutputStream(reportFile, false);
-             OutputStreamWriter writer = new OutputStreamWriter(fos)) {
+        try (final FileOutputStream fos = new FileOutputStream(reportFile, false);
+             final OutputStreamWriter writer = new OutputStreamWriter(fos)) {
 
             writer.write("PlaneIndex\tErrorSum\tMeanError\n");
 
@@ -185,7 +185,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
                                            planeError.getMeanAbsoluteError()));
             }
 
-        } catch (IOException e) {
+        } catch (final IOException e) {
             e.printStackTrace();
         }
         System.out.println("Finished reportPlaneDifference");
diff --git a/src/main/java/azgracompress/cli/functions/PlaneError.java b/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java
similarity index 78%
rename from src/main/java/azgracompress/cli/functions/PlaneError.java
rename to src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java
index 6b858bf5588d94a7a6c4a37c7892f03bc38e8848..45031c9407722aa62776a4eb9ab0183e6555ac9f 100644
--- a/src/main/java/azgracompress/cli/functions/PlaneError.java
+++ b/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java
@@ -1,11 +1,11 @@
-package azgracompress.cli.functions;
+package cz.it4i.qcmp.cli.functions;
 
 public class PlaneError {
     private final int planeIndex;
     private final double absoluteError;
     private final double meanAbsoluteError;
 
-    public PlaneError(int planeIndex, double absoluteError, double meanAbsoluteError) {
+    public PlaneError(final int planeIndex, final double absoluteError, final double meanAbsoluteError) {
         this.planeIndex = planeIndex;
         this.absoluteError = absoluteError;
         this.meanAbsoluteError = meanAbsoluteError;
diff --git a/src/main/java/azgracompress/compression/CompressionOptions.java b/src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java
similarity index 95%
rename from src/main/java/azgracompress/compression/CompressionOptions.java
rename to src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java
index e32af40e16e674b4da875bcd8f43667835b84820..e974e6a0039fe3df22ca08a9e04881f390a71fc4 100644
--- a/src/main/java/azgracompress/compression/CompressionOptions.java
+++ b/src/main/java/cz/it4i/qcmp/compression/CompressionOptions.java
@@ -1,9 +1,9 @@
-package azgracompress.compression;
+package cz.it4i.qcmp.compression;
 
-import azgracompress.cache.ICacheFile;
-import azgracompress.data.V3i;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.io.InputData;
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.io.InputData;
 
 /**
  * Options for the compressor/decompressor.
diff --git a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java b/src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java
similarity index 94%
rename from src/main/java/azgracompress/compression/CompressorDecompressorBase.java
rename to src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java
index 469f7b30435755d22c4b7406c9cf37ef3549a1a0..2df7a95306a9114e5c99b6c0d0cf2fe3ca6eabf8 100644
--- a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java
+++ b/src/main/java/cz/it4i/qcmp/compression/CompressorDecompressorBase.java
@@ -1,11 +1,11 @@
-package azgracompress.compression;
-
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.compression.listeners.IProgressListener;
-import azgracompress.compression.listeners.IStatusListener;
-import azgracompress.huffman.Huffman;
-import azgracompress.io.InputData;
-import azgracompress.io.OutBitStream;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.compression.listeners.IProgressListener;
+import cz.it4i.qcmp.compression.listeners.IStatusListener;
+import cz.it4i.qcmp.huffman.Huffman;
+import cz.it4i.qcmp.io.InputData;
+import cz.it4i.qcmp.io.OutBitStream;
 
 import java.io.DataOutputStream;
 import java.util.ArrayList;
diff --git a/src/main/java/azgracompress/compression/IImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java
similarity index 87%
rename from src/main/java/azgracompress/compression/IImageCompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java
index a7610fa97ebcceba0ea882e3aa27715b1ea82053..8d8ae984143d75c68b8c36f92b9c378eddd5cf89 100644
--- a/src/main/java/azgracompress/compression/IImageCompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/IImageCompressor.java
@@ -1,9 +1,8 @@
-package azgracompress.compression;
+package cz.it4i.qcmp.compression;
 
-import azgracompress.cache.ICacheFile;
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.V3i;
-import azgracompress.io.InputData;
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.io.InputData;
 
 import java.io.DataOutputStream;
 
diff --git a/src/main/java/azgracompress/compression/IImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java
similarity index 90%
rename from src/main/java/azgracompress/compression/IImageDecompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java
index 8037521761fd939ad2c99ad1bc4aba19f30b9647..175d9e58c2b8d00d5d07ccc4a8e427b636f31fe0 100644
--- a/src/main/java/azgracompress/compression/IImageDecompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/IImageDecompressor.java
@@ -1,8 +1,8 @@
-package azgracompress.compression;
+package cz.it4i.qcmp.compression;
 
-import azgracompress.cache.ICacheFile;
-import azgracompress.compression.exception.ImageDecompressionException;
-import azgracompress.fileformat.QCMPFileHeader;
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.compression.exception.ImageDecompressionException;
+import cz.it4i.qcmp.fileformat.QCMPFileHeader;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/compression/IListenable.java b/src/main/java/cz/it4i/qcmp/compression/IListenable.java
similarity index 77%
rename from src/main/java/azgracompress/compression/IListenable.java
rename to src/main/java/cz/it4i/qcmp/compression/IListenable.java
index 6a1f066c19eabbee53b8304c6f9a78e08032a9fa..72b6661c434cd1d3246f9fc13677e0c7b29573f1 100644
--- a/src/main/java/azgracompress/compression/IListenable.java
+++ b/src/main/java/cz/it4i/qcmp/compression/IListenable.java
@@ -1,7 +1,7 @@
-package azgracompress.compression;
+package cz.it4i.qcmp.compression;
 
-import azgracompress.compression.listeners.IProgressListener;
-import azgracompress.compression.listeners.IStatusListener;
+import cz.it4i.qcmp.compression.listeners.IProgressListener;
+import cz.it4i.qcmp.compression.listeners.IStatusListener;
 
 public interface IListenable {
     /**
diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java
similarity index 96%
rename from src/main/java/azgracompress/compression/ImageCompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java
index 2e0d000ba304a144486b1a40fc3cd95933d5c7ef..23f57921a75aaa27499509bf115be4f0ae2d775c 100644
--- a/src/main/java/azgracompress/compression/ImageCompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/ImageCompressor.java
@@ -1,11 +1,11 @@
-package azgracompress.compression;
-
-import azgracompress.U16;
-import azgracompress.cache.ICacheFile;
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.Range;
-import azgracompress.fileformat.QCMPFileHeader;
-import azgracompress.io.InputData;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.fileformat.QCMPFileHeader;
+import cz.it4i.qcmp.io.InputData;
 
 import java.io.*;
 import java.util.Arrays;
diff --git a/src/main/java/azgracompress/compression/ImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java
similarity index 83%
rename from src/main/java/azgracompress/compression/ImageDecompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java
index b8ab49d456c7fee7741eeca8f1766ad4bc63f51b..23503fa0c24dbf333f23a9e9e5998dd2b64561fc 100644
--- a/src/main/java/azgracompress/compression/ImageDecompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/ImageDecompressor.java
@@ -1,16 +1,15 @@
-package azgracompress.compression;
-
-import azgracompress.cache.ICacheFile;
-import azgracompress.compression.exception.ImageDecompressionException;
-import azgracompress.data.ImageU16Dataset;
-import azgracompress.fileformat.QCMPFileHeader;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.Utils;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.compression.exception.ImageDecompressionException;
+import cz.it4i.qcmp.data.ImageU16Dataset;
+import cz.it4i.qcmp.fileformat.QCMPFileHeader;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.Utils;
 import org.jetbrains.annotations.Nullable;
 
 import java.io.*;
-import java.util.Arrays;
 import java.util.Optional;
 
 
@@ -44,8 +43,8 @@ public class ImageDecompressor extends CompressorDecompressorBase {
      * @return Decompressed file header.
      * @throws IOException when failed to read header.
      */
-    private QCMPFileHeader readQCMPFileHeader(DataInputStream inputStream) throws IOException {
-        QCMPFileHeader header = new QCMPFileHeader();
+    private QCMPFileHeader readQCMPFileHeader(final DataInputStream inputStream) throws IOException {
+        final QCMPFileHeader header = new QCMPFileHeader();
         if (!header.readHeader(inputStream)) {
             // Invalid QCMPFile header.
             return null;
@@ -59,7 +58,7 @@ public class ImageDecompressor extends CompressorDecompressorBase {
      * @return Correct implementation of image decompressor.
      */
     private IImageDecompressor getImageDecompressor(final QuantizationType quantizationType) {
-        IImageDecompressor decompressor;
+        final IImageDecompressor decompressor;
         switch (quantizationType) {
             case Scalar:
                 decompressor = new SQImageDecompressor(options);
@@ -90,14 +89,14 @@ public class ImageDecompressor extends CompressorDecompressorBase {
      * @throws IOException When fails to read the header.
      */
     public String inspectCompressedFile() throws IOException {
-        StringBuilder logBuilder = new StringBuilder();
+        final StringBuilder logBuilder = new StringBuilder();
         boolean validFile = true;
 
-        QCMPFileHeader header;
-        try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
-             DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
+        final QCMPFileHeader header;
+        try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
+             final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
             header = readQCMPFileHeader(dataInputStream);
-        } catch (IOException ioEx) {
+        } catch (final IOException ioEx) {
             ioEx.printStackTrace();
             return "";
         }
@@ -199,8 +198,8 @@ public class ImageDecompressor extends CompressorDecompressorBase {
     public boolean decompressToFile() {
         final Stopwatch decompressionStopwatch = Stopwatch.startNew();
         final long decompressedFileSize;
-        try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
-             DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
+        try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
+             final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
 
             final QCMPFileHeader header = decompressQcmpHeader(dataInputStream);
             if (header == null)
@@ -218,17 +217,17 @@ public class ImageDecompressor extends CompressorDecompressorBase {
                 return false;
             }
 
-            try (FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false);
-                 DataOutputStream decompressStream = new DataOutputStream(fos)) {
+            try (final FileOutputStream fos = new FileOutputStream(options.getOutputFilePath(), false);
+                 final DataOutputStream decompressStream = new DataOutputStream(fos)) {
 
                 imageDecompressor.decompress(dataInputStream, decompressStream, header);
 
-            } catch (ImageDecompressionException ex) {
+            } catch (final ImageDecompressionException ex) {
                 System.err.println(ex.getMessage());
                 return false;
             }
 
-        } catch (IOException ioEx) {
+        } catch (final IOException ioEx) {
             ioEx.printStackTrace();
             return false;
         }
@@ -241,7 +240,7 @@ public class ImageDecompressor extends CompressorDecompressorBase {
         return true;
     }
 
-    private boolean checkInputFileSize(QCMPFileHeader header, IImageDecompressor imageDecompressor) {
+    private boolean checkInputFileSize(final QCMPFileHeader header, final IImageDecompressor imageDecompressor) {
         final long fileSize = new File(options.getInputDataInfo().getFilePath()).length();
         final long dataSize = fileSize - header.getHeaderSize();
         final long expectedDataSize = imageDecompressor.getExpectedDataSize(header);
@@ -253,14 +252,14 @@ public class ImageDecompressor extends CompressorDecompressorBase {
     }
 
     public Optional<ImageU16Dataset> decompressInMemory() {
-        try (FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
-             DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
+        try (final FileInputStream fileInputStream = new FileInputStream(options.getInputDataInfo().getFilePath());
+             final DataInputStream dataInputStream = new DataInputStream(fileInputStream)) {
 
             final QCMPFileHeader header = decompressQcmpHeader(dataInputStream);
             if (header == null)
                 return Optional.empty();
 
-            IImageDecompressor imageDecompressor = getImageDecompressor(header.getQuantizationType());
+            final IImageDecompressor imageDecompressor = getImageDecompressor(header.getQuantizationType());
             if (imageDecompressor == null) {
                 System.err.println("Unable to create correct decompressor.");
                 return Optional.empty();
@@ -276,14 +275,14 @@ public class ImageDecompressor extends CompressorDecompressorBase {
 
             try {
                 imageDecompressor.decompressToBuffer(dataInputStream, decompressedData, header);
-            } catch (ImageDecompressionException ex) {
+            } catch (final ImageDecompressionException ex) {
                 System.err.println(ex.getMessage());
                 return Optional.empty();
             }
 
             return Optional.of(new ImageU16Dataset(header.getImageDims().toV2i(), header.getImageSizeZ(), decompressedData));
 
-        } catch (IOException ioEx) {
+        } catch (final IOException ioEx) {
             ioEx.printStackTrace();
             return Optional.empty();
         }
@@ -291,7 +290,7 @@ public class ImageDecompressor extends CompressorDecompressorBase {
 
 
     public short[] decompressStream(final InputStream compressedStream, final int contentLength) throws ImageDecompressionException {
-        try (DataInputStream dis = new DataInputStream(new BufferedInputStream(compressedStream))) {
+        try (final DataInputStream dis = new DataInputStream(new BufferedInputStream(compressedStream))) {
             assert (dis.markSupported());
 
             final QCMPFileHeader header = cachedHeader.copyOf();
@@ -309,7 +308,7 @@ public class ImageDecompressor extends CompressorDecompressorBase {
             {
                 int toSkip = contentLength - ((4 * 2) + (chunkCount * 2));
                 while (toSkip > 0) {
-                    int skipped = dis.skipBytes(toSkip);
+                    final int skipped = dis.skipBytes(toSkip);
                     assert (skipped > 0);
                     toSkip -= skipped;
                 }
@@ -325,13 +324,13 @@ public class ImageDecompressor extends CompressorDecompressorBase {
 
 
             return cachedDecompressor.decompressStreamMode(dis, header);
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new ImageDecompressionException("Unable to decompress chunk of image from stream.", e);
         }
     }
 
     @Nullable
-    private QCMPFileHeader decompressQcmpHeader(DataInputStream dataInputStream) throws IOException {
+    private QCMPFileHeader decompressQcmpHeader(final DataInputStream dataInputStream) throws IOException {
         final QCMPFileHeader header = readQCMPFileHeader(dataInputStream);
         if (header == null) {
             System.err.println("Failed to read QCMPFile header");
diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java
similarity index 79%
rename from src/main/java/azgracompress/compression/SQImageCompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java
index 31fd8d6648318e367d85e9be987f8cafc4652e0e..22a8dd9db8684256cab8570c21d0b84702805f89 100644
--- a/src/main/java/azgracompress/compression/SQImageCompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/SQImageCompressor.java
@@ -1,19 +1,18 @@
-package azgracompress.compression;
-
-import azgracompress.U16;
-import azgracompress.cache.ICacheFile;
-import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.cache.SQCacheFile;
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.V3i;
-import azgracompress.huffman.Huffman;
-import azgracompress.io.InputData;
-import azgracompress.io.loader.IPlaneLoader;
-import azgracompress.io.loader.PlaneLoaderFactory;
-import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization;
-import azgracompress.quantization.scalar.SQCodebook;
-import azgracompress.quantization.scalar.ScalarQuantizer;
-import azgracompress.utilities.Stopwatch;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.cache.QuantizationCacheManager;
+import cz.it4i.qcmp.cache.SQCacheFile;
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.huffman.Huffman;
+import cz.it4i.qcmp.io.InputData;
+import cz.it4i.qcmp.io.loader.IPlaneLoader;
+import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
+import cz.it4i.qcmp.quantization.scalar.LloydMaxU16ScalarQuantization;
+import cz.it4i.qcmp.quantization.scalar.SQCodebook;
+import cz.it4i.qcmp.quantization.scalar.ScalarQuantizer;
+import cz.it4i.qcmp.utilities.Stopwatch;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -23,7 +22,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
     private ScalarQuantizer cachedQuantizer;
     private Huffman cachedHuffman;
 
-    public SQImageCompressor(CompressionOptions options) {
+    public SQImageCompressor(final CompressionOptions options) {
         super(options);
     }
 
@@ -35,15 +34,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
      */
     private ScalarQuantizer trainScalarQuantizerFromData(final int[] planeData) {
 
-        LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(planeData,
-                                                                                   getCodebookSize(),
-                                                                                   options.getWorkerCount());
+        final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(planeData,
+                                                                                         getCodebookSize(),
+                                                                                         options.getWorkerCount());
         lloydMax.train();
         return new ScalarQuantizer(U16.Min, U16.Max, lloydMax.getCodebook());
     }
 
     @Override
-    public void preloadGlobalCodebook(ICacheFile codebookCacheFile) {
+    public void preloadGlobalCodebook(final ICacheFile codebookCacheFile) {
         final SQCodebook cachedCodebook = ((SQCacheFile) codebookCacheFile).getCodebook();
         cachedQuantizer = new ScalarQuantizer(cachedCodebook);
         cachedHuffman = createHuffmanCoder(createHuffmanSymbols(cachedCodebook.getCodebookSize()), cachedCodebook.getSymbolFrequencies());
@@ -57,7 +56,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
      * @throws ImageCompressionException when writing to the stream fails.
      */
     private void writeCodebookToOutputStream(final ScalarQuantizer quantizer,
-                                             DataOutputStream compressStream) throws ImageCompressionException {
+                                             final DataOutputStream compressStream) throws ImageCompressionException {
         final SQCodebook codebook = quantizer.getCodebook();
         final int[] centroids = codebook.getCentroids();
         final long[] frequencies = codebook.getSymbolFrequencies();
@@ -68,7 +67,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             for (final long symbolFrequency : frequencies) {
                 compressStream.writeLong(symbolFrequency);
             }
-        } catch (IOException ioEx) {
+        } catch (final IOException ioEx) {
             throw new ImageCompressionException("Unable to write codebook to compress stream.", ioEx);
         }
         if (options.isVerbose()) {
@@ -83,7 +82,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
      * @throws ImageCompressionException when fails to read cached codebook.
      */
     private ScalarQuantizer loadQuantizerFromCache() throws ImageCompressionException {
-        QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder());
+        final QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder());
 
         if (!cacheManager.doesSQCacheExists(options.getInputDataInfo().getCacheFileName(), getCodebookSize())) {
             trainAndSaveCodebook();
@@ -104,15 +103,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
      * @throws ImageCompressionException When compress process fails.
      */
     @Override
-    public long[] compress(DataOutputStream compressStream) throws ImageCompressionException {
+    public long[] compress(final DataOutputStream compressStream) throws ImageCompressionException {
         final InputData inputDataInfo = options.getInputDataInfo();
-        Stopwatch stopwatch = new Stopwatch();
+        final Stopwatch stopwatch = new Stopwatch();
         final boolean hasGeneralQuantizer = options.getCodebookType() != CompressionOptions.CodebookType.Individual;
 
         final IPlaneLoader planeLoader;
         try {
             planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputDataInfo);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage());
         }
 
@@ -129,11 +128,11 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             writeCodebookToOutputStream(quantizer, compressStream);
         } else if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) {
             stopwatch.restart();
-            int[] middlePlaneData;
+            final int[] middlePlaneData;
             final int middlePlaneIndex = getMiddlePlaneIndex();
             try {
                 middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
-            } catch (IOException ex) {
+            } catch (final IOException ex) {
                 throw new ImageCompressionException("Unable to load middle plane data.", ex);
             }
 
@@ -147,15 +146,15 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
         }
 
         final int[] planeIndices = getPlaneIndicesForCompression(options.getInputDataInfo());
-        long[] planeDataSizes = new long[planeIndices.length];
+        final long[] planeDataSizes = new long[planeIndices.length];
         int planeCounter = 0;
         for (final int planeIndex : planeIndices) {
             stopwatch.restart();
 
-            int[] planeData;
+            final int[] planeData;
             try {
                 planeData = planeLoader.loadPlaneData(planeIndex);
-            } catch (IOException ex) {
+            } catch (final IOException ex) {
                 throw new ImageCompressionException("Unable to load plane data.", ex);
             }
 
@@ -187,7 +186,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
         final IPlaneLoader planeLoader;
         try {
             planeLoader = PlaneLoaderFactory.getPlaneLoaderForInputFile(inputDataInfo);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw new ImageCompressionException("Unable to create SCIFIO reader. " + e.getMessage());
         }
         int[] trainData = null;
@@ -196,7 +195,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             try {
                 reportStatusToListeners("Loading single plane data.");
                 trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex());
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 throw new ImageCompressionException("Failed to load plane data.", e);
             }
         } else if (inputDataInfo.isPlaneRangeSet()) {
@@ -204,7 +203,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             final int[] planes = getPlaneIndicesForCompression(options.getInputDataInfo());
             try {
                 trainData = planeLoader.loadPlanesU16Data(planes);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 e.printStackTrace();
                 throw new ImageCompressionException("Failed to load plane range data.", e);
             }
@@ -212,7 +211,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             reportStatusToListeners("Loading all planes data.");
             try {
                 trainData = planeLoader.loadAllPlanesU16Data();
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 throw new ImageCompressionException("Failed to load all planes data.", e);
             }
         }
@@ -221,11 +220,11 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
 
     @Override
     public void trainAndSaveCodebook() throws ImageCompressionException {
-        int[] trainData = loadConfiguredPlanesData();
+        final int[] trainData = loadConfiguredPlanesData();
 
-        LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(trainData,
-                                                                                   getCodebookSize(),
-                                                                                   options.getWorkerCount());
+        final LloydMaxU16ScalarQuantization lloydMax = new LloydMaxU16ScalarQuantization(trainData,
+                                                                                         getCodebookSize(),
+                                                                                         options.getWorkerCount());
         reportStatusToListeners("Starting LloydMax training.");
 
         lloydMax.setStatusListener(this::reportStatusToListeners);
@@ -233,18 +232,18 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
         final SQCodebook codebook = lloydMax.getCodebook();
         reportStatusToListeners("Finished LloydMax training.");
 
-        QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder());
+        final QuantizationCacheManager cacheManager = new QuantizationCacheManager(options.getCodebookCacheFolder());
         try {
             final String cacheFilePath = cacheManager.saveCodebook(options.getInputDataInfo().getCacheFileName(), codebook);
             reportStatusToListeners(String.format("Saved cache file to %s", cacheFilePath));
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new ImageCompressionException("Unable to write cache.", e);
         }
         reportStatusToListeners("Operation completed.");
     }
 
     @Override
-    public long[] compressStreamChunk(DataOutputStream compressStream, InputData inputData) throws ImageCompressionException {
+    public long[] compressStreamChunk(final DataOutputStream compressStream, final InputData inputData) throws ImageCompressionException {
         throw new ImageCompressionException("Not implemented yet");
     }
 }
diff --git a/src/main/java/azgracompress/compression/SQImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java
similarity index 74%
rename from src/main/java/azgracompress/compression/SQImageDecompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java
index 49ae1273e568c4af2efe038bac4c330c95ba1791..66f8d3ab759878da3d2147020f50eac66558f028 100644
--- a/src/main/java/azgracompress/compression/SQImageDecompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/SQImageDecompressor.java
@@ -1,16 +1,15 @@
-package azgracompress.compression;
-
-import azgracompress.cache.ICacheFile;
-import azgracompress.cache.SQCacheFile;
-import azgracompress.cache.VQCacheFile;
-import azgracompress.compression.exception.ImageDecompressionException;
-import azgracompress.fileformat.QCMPFileHeader;
-import azgracompress.huffman.Huffman;
-import azgracompress.huffman.HuffmanNode;
-import azgracompress.io.InBitStream;
-import azgracompress.quantization.scalar.SQCodebook;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.TypeConverter;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.cache.SQCacheFile;
+import cz.it4i.qcmp.compression.exception.ImageDecompressionException;
+import cz.it4i.qcmp.fileformat.QCMPFileHeader;
+import cz.it4i.qcmp.huffman.Huffman;
+import cz.it4i.qcmp.huffman.HuffmanNode;
+import cz.it4i.qcmp.io.InBitStream;
+import cz.it4i.qcmp.quantization.scalar.SQCodebook;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.TypeConverter;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -20,14 +19,14 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
     private SQCodebook cachedCodebook = null;
     private Huffman cachedHuffman = null;
 
-    public SQImageDecompressor(CompressionOptions options) {
+    public SQImageDecompressor(final CompressionOptions options) {
         super(options);
     }
 
-    private SQCodebook readScalarQuantizationValues(DataInputStream compressedStream,
+    private SQCodebook readScalarQuantizationValues(final DataInputStream compressedStream,
                                                     final int codebookSize) throws ImageDecompressionException {
-        int[] quantizationValues = new int[codebookSize];
-        long[] symbolFrequencies = new long[codebookSize];
+        final int[] quantizationValues = new int[codebookSize];
+        final long[] symbolFrequencies = new long[codebookSize];
         try {
             for (int i = 0; i < codebookSize; i++) {
                 quantizationValues[i] = compressedStream.readUnsignedShort();
@@ -35,23 +34,23 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
             for (int i = 0; i < codebookSize; i++) {
                 symbolFrequencies[i] = compressedStream.readLong();
             }
-        } catch (IOException ioEx) {
+        } catch (final IOException ioEx) {
             throw new ImageDecompressionException("Unable to read quantization values from compressed stream.", ioEx);
         }
         return new SQCodebook(quantizationValues, symbolFrequencies);
     }
 
     @Override
-    public long getExpectedDataSize(QCMPFileHeader header) {
+    public long getExpectedDataSize(final QCMPFileHeader header) {
         // Quantization value count.
         final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex());
 
         // Total codebook size in bytes. Also symbol frequencies for Huffman.
-        long codebookDataSize = ((2 * codebookSize) + (LONG_BYTES * codebookSize)) *
+        final long codebookDataSize = ((2 * codebookSize) + (LONG_BYTES * codebookSize)) *
                 (header.isCodebookPerPlane() ? header.getImageSizeZ() : 1);
 
         // Indices are encoded using huffman. Plane data size is written in the header.
-        long[] planeDataSizes = header.getPlaneDataSizes();
+        final long[] planeDataSizes = header.getPlaneDataSizes();
         long totalPlaneDataSize = 0;
         for (final long planeDataSize : planeDataSizes) {
             totalPlaneDataSize += planeDataSize;
@@ -61,9 +60,9 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
     }
 
     @Override
-    public void decompress(DataInputStream compressedStream,
-                           DataOutputStream decompressStream,
-                           QCMPFileHeader header) throws ImageDecompressionException {
+    public void decompress(final DataInputStream compressedStream,
+                           final DataOutputStream decompressStream,
+                           final QCMPFileHeader header) throws ImageDecompressionException {
 
         final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex());
         final int[] huffmanSymbols = createHuffmanSymbols(codebookSize);
@@ -80,7 +79,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
             huffman = createHuffmanCoder(huffmanSymbols, codebook.getSymbolFrequencies());
         }
 
-        Stopwatch stopwatch = new Stopwatch();
+        final Stopwatch stopwatch = new Stopwatch();
         for (int planeIndex = 0; planeIndex < planeCountForDecompression; planeIndex++) {
             stopwatch.restart();
             if (header.isCodebookPerPlane()) {
@@ -93,13 +92,13 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
             reportStatusToListeners(String.format("Decompressing plane %d...", planeIndex));
             byte[] decompressedPlaneData = null;
             final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex];
-            try (InBitStream inBitStream = new InBitStream(compressedStream,
-                                                           header.getBitsPerCodebookIndex(),
-                                                           planeDataSize)) {
+            try (final InBitStream inBitStream = new InBitStream(compressedStream,
+                                                                 header.getBitsPerCodebookIndex(),
+                                                                 planeDataSize)) {
                 inBitStream.readToBuffer();
                 inBitStream.setAllowReadFromUnderlyingStream(false);
 
-                int[] decompressedValues = new int[planePixelCount];
+                final int[] decompressedValues = new int[planePixelCount];
                 final int[] quantizationValues = codebook.getCentroids();
                 for (int pixel = 0; pixel < planePixelCount; pixel++) {
                     HuffmanNode currentHuffmanNode = huffman.getRoot();
@@ -115,12 +114,12 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
                         TypeConverter.unsignedShortArrayToByteArray(decompressedValues, false);
 
 
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 throw new ImageDecompressionException("SQImageDecompressor::decompress() - Unable to read indices from InBitStream.", ex);
             }
             try {
                 decompressStream.write(decompressedPlaneData);
-            } catch (IOException e) {
+            } catch (final IOException e) {
                 throw new ImageDecompressionException("Unable to write decompressed data to decompress stream.", e);
             }
 
@@ -133,16 +132,16 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
     public void preloadGlobalCodebook(final ICacheFile codebookCacheFile) {
         assert (codebookCacheFile instanceof SQCacheFile) : "Incorrect codebook cache file type for SQImageDecompressor";
 
-        SQCacheFile codebookCache = (SQCacheFile) codebookCacheFile;
+        final SQCacheFile codebookCache = (SQCacheFile) codebookCacheFile;
 
         cachedCodebook = codebookCache.getCodebook();
         cachedHuffman = createHuffmanCoder(createHuffmanSymbols(cachedCodebook.getCodebookSize()), cachedCodebook.getSymbolFrequencies());
     }
 
     @Override
-    public void decompressToBuffer(DataInputStream compressedStream,
-                                   short[][] buffer,
-                                   QCMPFileHeader header) throws ImageDecompressionException {
+    public void decompressToBuffer(final DataInputStream compressedStream,
+                                   final short[][] buffer,
+                                   final QCMPFileHeader header) throws ImageDecompressionException {
         final int codebookSize = (int) Math.pow(2, header.getBitsPerCodebookIndex());
         final int[] huffmanSymbols = createHuffmanSymbols(codebookSize);
         final int planeCountForDecompression = header.getImageSizeZ();
@@ -166,11 +165,11 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
             assert (codebook != null && huffman != null);
 
             final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex];
-            try (InBitStream inBitStream = new InBitStream(compressedStream, header.getBitsPerCodebookIndex(), planeDataSize)) {
+            try (final InBitStream inBitStream = new InBitStream(compressedStream, header.getBitsPerCodebookIndex(), planeDataSize)) {
                 inBitStream.readToBuffer();
                 inBitStream.setAllowReadFromUnderlyingStream(false);
 
-                int[] decompressedValues = new int[planePixelCount];
+                final int[] decompressedValues = new int[planePixelCount];
                 final int[] quantizationValues = codebook.getCentroids();
                 for (int pixel = 0; pixel < planePixelCount; pixel++) {
                     HuffmanNode currentHuffmanNode = huffman.getRoot();
@@ -183,7 +182,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
                 }
 
                 buffer[planeIndex] = TypeConverter.intArrayToShortArray(decompressedValues);
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 throw new ImageDecompressionException("SQImageDecompressor::decompressToBuffer() - Unable to read indices from " +
                                                               "InBitStream.",
                                                       ex);
@@ -192,7 +191,7 @@ public class SQImageDecompressor extends CompressorDecompressorBase implements I
     }
 
     @Override
-    public short[] decompressStreamMode(DataInputStream compressedStream, QCMPFileHeader header) throws ImageDecompressionException {
+    public short[] decompressStreamMode(final DataInputStream compressedStream, final QCMPFileHeader header) throws ImageDecompressionException {
         throw new ImageDecompressionException("Not implemented yet.");
     }
 }
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java
similarity index 95%
rename from src/main/java/azgracompress/compression/VQImageCompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java
index 4652ee90cd02d112736bb9c0b2e57f00d0bda4cb..21653111257925d34b54cb7c380ce6081fbc41a8 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/VQImageCompressor.java
@@ -1,21 +1,21 @@
-package azgracompress.compression;
-
-import azgracompress.cache.ICacheFile;
-import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.cache.VQCacheFile;
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.Range;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.huffman.Huffman;
-import azgracompress.io.InputData;
-import azgracompress.io.loader.IPlaneLoader;
-import azgracompress.io.loader.PlaneLoaderFactory;
-import azgracompress.quantization.vector.LBGResult;
-import azgracompress.quantization.vector.LBGVectorQuantizer;
-import azgracompress.quantization.vector.VQCodebook;
-import azgracompress.quantization.vector.VectorQuantizer;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.Utils;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.cache.QuantizationCacheManager;
+import cz.it4i.qcmp.cache.VQCacheFile;
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.huffman.Huffman;
+import cz.it4i.qcmp.io.InputData;
+import cz.it4i.qcmp.io.loader.IPlaneLoader;
+import cz.it4i.qcmp.io.loader.PlaneLoaderFactory;
+import cz.it4i.qcmp.quantization.vector.LBGResult;
+import cz.it4i.qcmp.quantization.vector.LBGVectorQuantizer;
+import cz.it4i.qcmp.quantization.vector.VQCodebook;
+import cz.it4i.qcmp.quantization.vector.VectorQuantizer;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.Utils;
 import org.jetbrains.annotations.NotNull;
 
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java
similarity index 97%
rename from src/main/java/azgracompress/compression/VQImageDecompressor.java
rename to src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java
index 323b82cc0c963a019108677969f103b00059dd4e..31920ffae16936ee5d7ac300c7d4f567c42f0ca0 100644
--- a/src/main/java/azgracompress/compression/VQImageDecompressor.java
+++ b/src/main/java/cz/it4i/qcmp/compression/VQImageDecompressor.java
@@ -1,17 +1,17 @@
-package azgracompress.compression;
-
-import azgracompress.cache.ICacheFile;
-import azgracompress.cache.VQCacheFile;
-import azgracompress.compression.exception.ImageDecompressionException;
-import azgracompress.data.*;
-import azgracompress.fileformat.QCMPFileHeader;
-import azgracompress.fileformat.QuantizationType;
-import azgracompress.huffman.Huffman;
-import azgracompress.huffman.HuffmanNode;
-import azgracompress.io.InBitStream;
-import azgracompress.quantization.vector.VQCodebook;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.TypeConverter;
+package cz.it4i.qcmp.compression;
+
+import cz.it4i.qcmp.cache.ICacheFile;
+import cz.it4i.qcmp.cache.VQCacheFile;
+import cz.it4i.qcmp.compression.exception.ImageDecompressionException;
+import cz.it4i.qcmp.data.*;
+import cz.it4i.qcmp.fileformat.QCMPFileHeader;
+import cz.it4i.qcmp.fileformat.QuantizationType;
+import cz.it4i.qcmp.huffman.Huffman;
+import cz.it4i.qcmp.huffman.HuffmanNode;
+import cz.it4i.qcmp.io.InBitStream;
+import cz.it4i.qcmp.quantization.vector.VQCodebook;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.TypeConverter;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/compression/exception/ImageCompressionException.java b/src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java
similarity index 93%
rename from src/main/java/azgracompress/compression/exception/ImageCompressionException.java
rename to src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java
index 6ccb78f1bbf620e37484bc48dc9492ad3acc5fba..65c7e0afd0e5467fd2bee2afe058df8531affe9c 100644
--- a/src/main/java/azgracompress/compression/exception/ImageCompressionException.java
+++ b/src/main/java/cz/it4i/qcmp/compression/exception/ImageCompressionException.java
@@ -1,4 +1,4 @@
-package azgracompress.compression.exception;
+package cz.it4i.qcmp.compression.exception;
 
 public class ImageCompressionException extends Exception {
     private final Exception innerException;
diff --git a/src/main/java/azgracompress/compression/exception/ImageDecompressionException.java b/src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java
similarity index 93%
rename from src/main/java/azgracompress/compression/exception/ImageDecompressionException.java
rename to src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java
index 4ddeaa36769136c1d0c015afa640e3dfc238858e..609338616aee063655ca4314ac5f65e1911ab73f 100644
--- a/src/main/java/azgracompress/compression/exception/ImageDecompressionException.java
+++ b/src/main/java/cz/it4i/qcmp/compression/exception/ImageDecompressionException.java
@@ -1,4 +1,4 @@
-package azgracompress.compression.exception;
+package cz.it4i.qcmp.compression.exception;
 
 public class ImageDecompressionException extends Exception {
     private final Exception innerException;
diff --git a/src/main/java/azgracompress/compression/listeners/IProgressListener.java b/src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java
similarity index 73%
rename from src/main/java/azgracompress/compression/listeners/IProgressListener.java
rename to src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java
index 3c9c68828f96533f777bf0f3dd9332c1c94d0dde..c3fcca5c236e089ed8b2b5f6ee66a95947422460 100644
--- a/src/main/java/azgracompress/compression/listeners/IProgressListener.java
+++ b/src/main/java/cz/it4i/qcmp/compression/listeners/IProgressListener.java
@@ -1,4 +1,4 @@
-package azgracompress.compression.listeners;
+package cz.it4i.qcmp.compression.listeners;
 
 public interface IProgressListener {
     void sendProgress(final String message, final int index, final int finalIndex);
diff --git a/src/main/java/azgracompress/compression/listeners/IStatusListener.java b/src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java
similarity index 64%
rename from src/main/java/azgracompress/compression/listeners/IStatusListener.java
rename to src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java
index bd549e4c5de18abd2d9a262d806460139dcca410..e28370f25066f5083068c7e3d7d25a7b0fba981f 100644
--- a/src/main/java/azgracompress/compression/listeners/IStatusListener.java
+++ b/src/main/java/cz/it4i/qcmp/compression/listeners/IStatusListener.java
@@ -1,4 +1,4 @@
-package azgracompress.compression.listeners;
+package cz.it4i.qcmp.compression.listeners;
 
 public interface IStatusListener {
     void sendMessage(final String message);
diff --git a/src/main/java/azgracompress/data/Block.java b/src/main/java/cz/it4i/qcmp/data/Block.java
similarity index 96%
rename from src/main/java/azgracompress/data/Block.java
rename to src/main/java/cz/it4i/qcmp/data/Block.java
index cf4a42f9667417ea9031de111b1ed2a5ee55f3b8..5165fd04438be887aae93ebc6e3f262f4e59df72 100644
--- a/src/main/java/azgracompress/data/Block.java
+++ b/src/main/java/cz/it4i/qcmp/data/Block.java
@@ -1,8 +1,8 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public class Block {
     private final int FILL_VALUE = 0;
-    private int[] data;
+    private final int[] data;
 
     private final V2i dims;
 
@@ -75,7 +75,7 @@ public class Block {
      *
      * @param vectors Array of 1D row vectors.
      */
-    public void reconstructFromVectors(int[][] vectors) {
+    public void reconstructFromVectors(final int[][] vectors) {
         if (vectors.length == 0) {
             return;
         }
@@ -155,7 +155,7 @@ public class Block {
      * @param chunkXOffset Chunk X offset.
      * @param chunkYOffset Chunk Y offset.
      */
-    private void copyDataFromVector(int[] vector,
+    private void copyDataFromVector(final int[] vector,
                                     final V2i qVectorDims,
                                     final int chunkXOffset,
                                     final int chunkYOffset) {
@@ -182,7 +182,7 @@ public class Block {
      * @return True if same.
      */
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (obj instanceof Block) {
             final Block otherChunk = (Block) obj;
             if (data.length != otherChunk.data.length) {
diff --git a/src/main/java/azgracompress/data/ImageU16.java b/src/main/java/cz/it4i/qcmp/data/ImageU16.java
similarity index 63%
rename from src/main/java/azgracompress/data/ImageU16.java
rename to src/main/java/cz/it4i/qcmp/data/ImageU16.java
index c2787c2e2be46a796939702f81553aba885b9598..8326f6030095c8e98ed74c4dcc4639184e2af787 100644
--- a/src/main/java/azgracompress/data/ImageU16.java
+++ b/src/main/java/cz/it4i/qcmp/data/ImageU16.java
@@ -1,12 +1,12 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.utilities.Utils;
 
 public class ImageU16 {
 
     private final int width;
     private final int height;
-    private int[] data;
+    private final int[] data;
 
     public ImageU16(final int width, final int height, final int[] data) {
         assert ((width * height) == data.length) : "Wrong data size in ImageU16 constructor.";
@@ -54,20 +54,20 @@ public class ImageU16 {
         return height;
     }
 
-//    /**
-//     * Chunk the image data into quantization vectors of requested dimension.
-//     *
-//     * @param qVectorDims Quantization vector dimension.
-//     * @return Array of quantization vectors.
-//     */
-//    public int[][] toQuantizationVectors(final V2i qVectorDims) {
-//        if (qVectorDims.getY() == 1) {
-//            // 1D row vectors.
-//            return as2dChunk().divideInto1DVectors(qVectorDims.getX());
-//        } else {
-//            // 2D matrix vectors.
-//            return as2dChunk().divideInto2DVectors(qVectorDims);
-//            //return Chunk2D.chunksAsImageVectors(as2dChunk().divideIntoChunks(qVectorDims));
-//        }
-//    }
+    //    /**
+    //     * Chunk the image data into quantization vectors of requested dimension.
+    //     *
+    //     * @param qVectorDims Quantization vector dimension.
+    //     * @return Array of quantization vectors.
+    //     */
+    //    public int[][] toQuantizationVectors(final V2i qVectorDims) {
+    //        if (qVectorDims.getY() == 1) {
+    //            // 1D row vectors.
+    //            return as2dChunk().divideInto1DVectors(qVectorDims.getX());
+    //        } else {
+    //            // 2D matrix vectors.
+    //            return as2dChunk().divideInto2DVectors(qVectorDims);
+    //            //return Chunk2D.chunksAsImageVectors(as2dChunk().divideIntoChunks(qVectorDims));
+    //        }
+    //    }
 }
diff --git a/src/main/java/azgracompress/data/ImageU16Dataset.java b/src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java
similarity index 81%
rename from src/main/java/azgracompress/data/ImageU16Dataset.java
rename to src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java
index 0e4d42cf3ce7c2c7d994ecc0fc90f8342d21076b..da3cb46bf8a2da7142b74c6efe1699ea04cfc1da 100644
--- a/src/main/java/azgracompress/data/ImageU16Dataset.java
+++ b/src/main/java/cz/it4i/qcmp/data/ImageU16Dataset.java
@@ -1,11 +1,11 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public class ImageU16Dataset {
     private final V2i planeDimensions;
     private final int planeCount;
     private final short[][] data;
 
-    public ImageU16Dataset(V2i planeDimensions, int planeCount, short[][] planeData) {
+    public ImageU16Dataset(final V2i planeDimensions, final int planeCount, final short[][] planeData) {
         this.planeDimensions = planeDimensions;
         this.planeCount = planeCount;
         this.data = planeData;
diff --git a/src/main/java/azgracompress/data/Range.java b/src/main/java/cz/it4i/qcmp/data/Range.java
similarity index 92%
rename from src/main/java/azgracompress/data/Range.java
rename to src/main/java/cz/it4i/qcmp/data/Range.java
index a30f7a8191bfac3858b1bb02603acc1f62f165be..c309cd496ec1c4524480b43225ba4082609cd4bc 100644
--- a/src/main/java/azgracompress/data/Range.java
+++ b/src/main/java/cz/it4i/qcmp/data/Range.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public final class Range<T extends Comparable<T>> {
     /**
@@ -17,7 +17,7 @@ public final class Range<T extends Comparable<T>> {
      * @param from Start of the interval,
      * @param to   Inclusive end of the interval.
      */
-    public Range(T from, T to) {
+    public Range(final T from, final T to) {
         this.from = from;
         this.to = to;
     }
diff --git a/src/main/java/azgracompress/data/V2.java b/src/main/java/cz/it4i/qcmp/data/V2.java
similarity index 95%
rename from src/main/java/azgracompress/data/V2.java
rename to src/main/java/cz/it4i/qcmp/data/V2.java
index b8968aff1a82690c5c1a759d37b8fe00f6941da5..50dd46201805d1cf1185b6c23e1ff1f2f91a0da8 100644
--- a/src/main/java/azgracompress/data/V2.java
+++ b/src/main/java/cz/it4i/qcmp/data/V2.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 /**
  * Template for vector with two values.
@@ -71,7 +71,7 @@ public class V2<T> {
      * @return True if both objects are equal.
      */
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (obj instanceof V2<?>) {
             final V2<?> other = (V2<?>) obj;
             return ((x == other.x) && (y == other.y));
diff --git a/src/main/java/azgracompress/data/V2i.java b/src/main/java/cz/it4i/qcmp/data/V2i.java
similarity index 95%
rename from src/main/java/azgracompress/data/V2i.java
rename to src/main/java/cz/it4i/qcmp/data/V2i.java
index ee00c8b1ae8211ad6636a1c572317e291284252c..aca7fe528e3fe2be6e23cc62337c877f3afe5493 100644
--- a/src/main/java/azgracompress/data/V2i.java
+++ b/src/main/java/cz/it4i/qcmp/data/V2i.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public final class V2i extends V2<Integer> {
     public V2i(final int x, final int y) {
diff --git a/src/main/java/azgracompress/data/V3.java b/src/main/java/cz/it4i/qcmp/data/V3.java
similarity index 94%
rename from src/main/java/azgracompress/data/V3.java
rename to src/main/java/cz/it4i/qcmp/data/V3.java
index c9ae9c7faa2eff4e0b4286941ba34d9f99894ba3..973bd9dd6644bf4123bd44177b2a162f83f603e9 100644
--- a/src/main/java/azgracompress/data/V3.java
+++ b/src/main/java/cz/it4i/qcmp/data/V3.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 /**
  * Template for vector with three values.
@@ -49,7 +49,7 @@ public class V3<T> extends V2<T> {
      * @return True if both objects are equal.
      */
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (obj instanceof V3<?>) {
             final V3<?> other = (V3<?>) obj;
             return ((getX() == other.getX()) && (getY() == other.getY()) && (z == other.z));
diff --git a/src/main/java/azgracompress/data/V3i.java b/src/main/java/cz/it4i/qcmp/data/V3i.java
similarity index 97%
rename from src/main/java/azgracompress/data/V3i.java
rename to src/main/java/cz/it4i/qcmp/data/V3i.java
index b8c730ea94fa03722faa90d87104b8a0f73043e1..b75767215a4a956d37e55f27d9ed01be0c33908d 100644
--- a/src/main/java/azgracompress/data/V3i.java
+++ b/src/main/java/cz/it4i/qcmp/data/V3i.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public final class V3i extends V3<Integer> {
 
diff --git a/src/main/java/azgracompress/data/Voxel.java b/src/main/java/cz/it4i/qcmp/data/Voxel.java
similarity index 99%
rename from src/main/java/azgracompress/data/Voxel.java
rename to src/main/java/cz/it4i/qcmp/data/Voxel.java
index 582a0659002a9b236b5f95f2f8f392fcffe9a398..b41fd312b0ba31fa9d409ac57332b9fee7ca6f39 100644
--- a/src/main/java/azgracompress/data/Voxel.java
+++ b/src/main/java/cz/it4i/qcmp/data/Voxel.java
@@ -1,4 +1,4 @@
-package azgracompress.data;
+package cz.it4i.qcmp.data;
 
 public final class Voxel {
     /**
@@ -128,6 +128,7 @@ public final class Voxel {
         reconstructFromVoxels(voxelDims, voxelData, reconstructedData, 0);
         return new ImageU16Dataset(dims.toV2i(), dims.getZ(), reconstructedData);
     }
+
     /*
     public short[] reconstructFromVoxelsToVoxelArray(final V3i voxelDims, final int[][] voxelData) {
         final short[] reconstructedVoxel = new short[(int) dims.multiplyTogether()];
diff --git a/src/main/java/azgracompress/fileformat/FileExtensions.java b/src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java
similarity index 84%
rename from src/main/java/azgracompress/fileformat/FileExtensions.java
rename to src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java
index f0f9a6c19726614f3c5de019ee16370f2f15b0c6..cb8675d5daa4b6d53ce4c4bb10d7cae84d9c956e 100644
--- a/src/main/java/azgracompress/fileformat/FileExtensions.java
+++ b/src/main/java/cz/it4i/qcmp/fileformat/FileExtensions.java
@@ -1,4 +1,4 @@
-package azgracompress.fileformat;
+package cz.it4i.qcmp.fileformat;
 
 public class FileExtensions {
     public static final String RAW = "raw";
diff --git a/src/main/java/azgracompress/fileformat/QCMPFileHeader.java b/src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java
similarity index 98%
rename from src/main/java/azgracompress/fileformat/QCMPFileHeader.java
rename to src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java
index 7f8ffd75af3a6d73f2dff5bf04b1e9827ae4c26a..f613977f33ebf23b46361d2860b92f9d1f430502 100644
--- a/src/main/java/azgracompress/fileformat/QCMPFileHeader.java
+++ b/src/main/java/cz/it4i/qcmp/fileformat/QCMPFileHeader.java
@@ -1,8 +1,8 @@
-package azgracompress.fileformat;
+package cz.it4i.qcmp.fileformat;
 
-import azgracompress.U16;
-import azgracompress.compression.VQImageCompressor;
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.compression.VQImageCompressor;
+import cz.it4i.qcmp.data.V3i;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
diff --git a/src/main/java/azgracompress/fileformat/QuantizationType.java b/src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java
similarity index 90%
rename from src/main/java/azgracompress/fileformat/QuantizationType.java
rename to src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java
index 649b9268768c4966aa14cb7c75525ae5d8513853..3acce0a620720553f683539c91f13b272c42ebf1 100644
--- a/src/main/java/azgracompress/fileformat/QuantizationType.java
+++ b/src/main/java/cz/it4i/qcmp/fileformat/QuantizationType.java
@@ -1,4 +1,4 @@
-package azgracompress.fileformat;
+package cz.it4i.qcmp.fileformat;
 
 public enum QuantizationType {
     Scalar(0),
@@ -9,7 +9,7 @@ public enum QuantizationType {
 
     private final int value;
 
-    QuantizationType(int enumValue) {
+    QuantizationType(final int enumValue) {
         value = enumValue;
     }
 
diff --git a/src/main/java/azgracompress/huffman/Huffman.java b/src/main/java/cz/it4i/qcmp/huffman/Huffman.java
similarity index 77%
rename from src/main/java/azgracompress/huffman/Huffman.java
rename to src/main/java/cz/it4i/qcmp/huffman/Huffman.java
index 771efbc5fa19682215b8812747ee417fa473f743..624fbf9051c53872e3b296e18ab62bdd25bd5194 100644
--- a/src/main/java/azgracompress/huffman/Huffman.java
+++ b/src/main/java/cz/it4i/qcmp/huffman/Huffman.java
@@ -1,4 +1,4 @@
-package azgracompress.huffman;
+package cz.it4i.qcmp.huffman;
 
 import java.util.*;
 
@@ -9,14 +9,14 @@ public class Huffman {
     private final int[] symbols;
     private final long[] symbolFrequencies;
 
-    public Huffman(int[] symbols, long[] symbolFrequencies) {
+    public Huffman(final int[] symbols, final long[] symbolFrequencies) {
         assert (symbols.length == symbolFrequencies.length) : "Array lengths mismatch";
         this.symbols = symbols;
         this.symbolFrequencies = symbolFrequencies;
     }
 
     public void buildHuffmanTree() {
-        PriorityQueue<HuffmanNode> queue = buildPriorityQueue();
+        final PriorityQueue<HuffmanNode> queue = buildPriorityQueue();
 
 
         while (queue.size() != 1) {
@@ -46,7 +46,7 @@ public class Huffman {
         traverseSymbolCodes(root, new ArrayList<Boolean>());
     }
 
-    private void traverseSymbolCodes(HuffmanNode currentNode, ArrayList<Boolean> currentCode) {
+    private void traverseSymbolCodes(final HuffmanNode currentNode, final ArrayList<Boolean> currentCode) {
         boolean inLeaf = true;
         final int bit = currentNode.getBit();
         if (bit != -1) {
@@ -54,12 +54,12 @@ public class Huffman {
         }
 
         if (currentNode.subNodeA != null) {
-            ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode);
+            final ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode);
             traverseSymbolCodes(currentNode.subNodeA, codeCopy);
             inLeaf = false;
         }
         if (currentNode.subNodeB != null) {
-            ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode);
+            final ArrayList<Boolean> codeCopy = new ArrayList<Boolean>(currentCode);
             traverseSymbolCodes(currentNode.subNodeB, codeCopy);
             inLeaf = false;
         }
@@ -68,7 +68,7 @@ public class Huffman {
             assert (currentNode.isLeaf());
             //currentNode.setIsLeaf(true);
 
-            boolean[] finalSymbolCode = new boolean[currentCode.size()];
+            final boolean[] finalSymbolCode = new boolean[currentCode.size()];
             for (int i = 0; i < finalSymbolCode.length; i++) {
                 finalSymbolCode[i] = currentCode.get(i);
             }
@@ -84,7 +84,7 @@ public class Huffman {
             totalFrequency += symbolFrequency;
         }
 
-        PriorityQueue<HuffmanNode> queue = new PriorityQueue<>(symbols.length);
+        final PriorityQueue<HuffmanNode> queue = new PriorityQueue<>(symbols.length);
 
         for (int sIndex = 0; sIndex < symbols.length; sIndex++) {
             final double symbolProbability = (double) symbolFrequencies[sIndex] / totalFrequency;
@@ -108,18 +108,18 @@ public class Huffman {
         return createSortedHashMap(symbolProbabilityMap);
     }
 
-    private HashMap<Integer, Double> createSortedHashMap(HashMap<Integer, Double> map) {
-        List<Map.Entry<Integer, Double>> list = new LinkedList<Map.Entry<Integer, Double>>(map.entrySet());
+    private HashMap<Integer, Double> createSortedHashMap(final HashMap<Integer, Double> map) {
+        final List<Map.Entry<Integer, Double>> list = new LinkedList<Map.Entry<Integer, Double>>(map.entrySet());
         //Custom Comparator
         list.sort(new Comparator<Map.Entry<Integer, Double>>() {
             @Override
-            public int compare(Map.Entry<Integer, Double> t0, Map.Entry<Integer, Double> t1) {
+            public int compare(final Map.Entry<Integer, Double> t0, final Map.Entry<Integer, Double> t1) {
                 return -(t0.getValue().compareTo(t1.getValue()));
             }
         });
         //copying the sorted list in HashMap to preserve the iteration order
-        HashMap<Integer,Double> sortedHashMap = new LinkedHashMap<Integer,Double>();
-        for (Map.Entry<Integer, Double> entry : list) {
+        final HashMap<Integer, Double> sortedHashMap = new LinkedHashMap<Integer, Double>();
+        for (final Map.Entry<Integer, Double> entry : list) {
             sortedHashMap.put(entry.getKey(), entry.getValue());
         }
         return sortedHashMap;
diff --git a/src/main/java/azgracompress/huffman/HuffmanNode.java b/src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java
similarity index 87%
rename from src/main/java/azgracompress/huffman/HuffmanNode.java
rename to src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java
index 4b0ea724055980ebf3770dfcd103bb841f6b8705..34d16ccc58e280693a2ee96664c689700e8a24ea 100644
--- a/src/main/java/azgracompress/huffman/HuffmanNode.java
+++ b/src/main/java/cz/it4i/qcmp/huffman/HuffmanNode.java
@@ -1,4 +1,4 @@
-package azgracompress.huffman;
+package cz.it4i.qcmp.huffman;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -22,7 +22,7 @@ public class HuffmanNode implements Comparable<HuffmanNode> {
         this.leaf = true;
     }
 
-    public HuffmanNode(final double probability, HuffmanNode parentA, HuffmanNode parentB) {
+    public HuffmanNode(final double probability, final HuffmanNode parentA, final HuffmanNode parentB) {
         this.probability = probability;
         this.subNodeA = parentA;
         this.subNodeB = parentB;
@@ -39,11 +39,11 @@ public class HuffmanNode implements Comparable<HuffmanNode> {
     }
 
     @Override
-    public int compareTo(@NotNull HuffmanNode otherNode) {
+    public int compareTo(@NotNull final HuffmanNode otherNode) {
         return Double.compare(probability, otherNode.probability);
     }
 
-    public void setBit(int bit) {
+    public void setBit(final int bit) {
         this.bit = bit;
     }
 
diff --git a/src/main/java/azgracompress/io/BufferInputData.java b/src/main/java/cz/it4i/qcmp/io/BufferInputData.java
similarity index 95%
rename from src/main/java/azgracompress/io/BufferInputData.java
rename to src/main/java/cz/it4i/qcmp/io/BufferInputData.java
index f46dd0592b33790b666322c27e445d39572617de..3b263a20697aabeb2b80af99bd30952eaa41ed1f 100644
--- a/src/main/java/azgracompress/io/BufferInputData.java
+++ b/src/main/java/cz/it4i/qcmp/io/BufferInputData.java
@@ -1,6 +1,6 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.V3i;
 
 /**
  * Input data backed by the buffer object.
diff --git a/src/main/java/azgracompress/io/FileInputData.java b/src/main/java/cz/it4i/qcmp/io/FileInputData.java
similarity index 87%
rename from src/main/java/azgracompress/io/FileInputData.java
rename to src/main/java/cz/it4i/qcmp/io/FileInputData.java
index 968fbd66d7a2302d61e2added34382470e7a0d30..fccce4c13c494939461ebcb49207daa73c227d53 100644
--- a/src/main/java/azgracompress/io/FileInputData.java
+++ b/src/main/java/cz/it4i/qcmp/io/FileInputData.java
@@ -1,4 +1,4 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
 /**
  * Input data backed by the file.
@@ -15,7 +15,7 @@ public class FileInputData extends InputData {
      *
      * @param filePath
      */
-    public FileInputData(String filePath) {
+    public FileInputData(final String filePath) {
         this.filePath = filePath;
     }
 
diff --git a/src/main/java/azgracompress/io/FlatBufferInputData.java b/src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java
similarity index 95%
rename from src/main/java/azgracompress/io/FlatBufferInputData.java
rename to src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java
index 5e5629bf9077275f619dcc13772b746c4ff1d18a..3cad98b4a9c8680da0d14429184c4fb8bd44eb23 100644
--- a/src/main/java/azgracompress/io/FlatBufferInputData.java
+++ b/src/main/java/cz/it4i/qcmp/io/FlatBufferInputData.java
@@ -1,6 +1,6 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.V3i;
 
 /**
  * Input data backed by the single buffer object.
diff --git a/src/main/java/azgracompress/io/InBitStream.java b/src/main/java/cz/it4i/qcmp/io/InBitStream.java
similarity index 99%
rename from src/main/java/azgracompress/io/InBitStream.java
rename to src/main/java/cz/it4i/qcmp/io/InBitStream.java
index 9293c4b5e28dbddfc8f6fb1a0c8d991baa4f36f5..c7c5827492993a7661f7a205bf1cf846b85a719b 100644
--- a/src/main/java/azgracompress/io/InBitStream.java
+++ b/src/main/java/cz/it4i/qcmp/io/InBitStream.java
@@ -1,4 +1,4 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/azgracompress/io/InputData.java b/src/main/java/cz/it4i/qcmp/io/InputData.java
similarity index 84%
rename from src/main/java/azgracompress/io/InputData.java
rename to src/main/java/cz/it4i/qcmp/io/InputData.java
index 0a384d20f5d4997012bf6081a3ef77ae60bbb546..d6a3fe37d338a1b8587a7ed3966c6b02bb5476ce 100644
--- a/src/main/java/azgracompress/io/InputData.java
+++ b/src/main/java/cz/it4i/qcmp/io/InputData.java
@@ -1,7 +1,7 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
-import azgracompress.data.Range;
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V3i;
 
 /**
  * Information about the input file.
@@ -67,7 +67,7 @@ public abstract class InputData {
         return planeIndex;
     }
 
-    public void setPlaneIndex(Integer planeIndex) {
+    public void setPlaneIndex(final Integer planeIndex) {
         this.planeIndex = planeIndex;
     }
 
@@ -75,7 +75,7 @@ public abstract class InputData {
         return planeRange;
     }
 
-    public void setPlaneRange(Range<Integer> planeRange) {
+    public void setPlaneRange(final Range<Integer> planeRange) {
         this.planeRange = planeRange;
     }
 
@@ -83,7 +83,7 @@ public abstract class InputData {
         return dataLoaderType;
     }
 
-    public void setDataLoaderType(DataLoaderType dataLoaderType) {
+    public void setDataLoaderType(final DataLoaderType dataLoaderType) {
         this.dataLoaderType = dataLoaderType;
     }
 
@@ -91,7 +91,7 @@ public abstract class InputData {
         return pixelType;
     }
 
-    public void setPixelType(PixelType pixelType) {
+    public void setPixelType(final PixelType pixelType) {
         this.pixelType = pixelType;
     }
 
diff --git a/src/main/java/azgracompress/io/MemoryOutputStream.java b/src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java
similarity index 93%
rename from src/main/java/azgracompress/io/MemoryOutputStream.java
rename to src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java
index f23a80c00645772374311587a6afd3fa4838855b..48309eb5944391e6cdb0c64ef6230370843f119f 100644
--- a/src/main/java/azgracompress/io/MemoryOutputStream.java
+++ b/src/main/java/cz/it4i/qcmp/io/MemoryOutputStream.java
@@ -1,4 +1,4 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
 import java.io.ByteArrayOutputStream;
 
diff --git a/src/main/java/azgracompress/io/OutBitStream.java b/src/main/java/cz/it4i/qcmp/io/OutBitStream.java
similarity index 92%
rename from src/main/java/azgracompress/io/OutBitStream.java
rename to src/main/java/cz/it4i/qcmp/io/OutBitStream.java
index 2d3b88625902701f6b1d5ba793ebd6dc68a396ea..344f0330a508afb37c539b9e89da570f6e858810 100644
--- a/src/main/java/azgracompress/io/OutBitStream.java
+++ b/src/main/java/cz/it4i/qcmp/io/OutBitStream.java
@@ -1,12 +1,12 @@
-package azgracompress.io;
+package cz.it4i.qcmp.io;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
 public class OutBitStream implements AutoCloseable {
-    private OutputStream outStream;
+    private final OutputStream outStream;
 
-    private byte[] buffer;
+    private final byte[] buffer;
     private int bufferPosition;
 
     private byte bitBuffer = 0x00;
@@ -16,7 +16,7 @@ public class OutBitStream implements AutoCloseable {
 
     private long bytesWritten = 0;
 
-    public OutBitStream(OutputStream outputStream, final int bitsPerValue, final int bufferSize) {
+    public OutBitStream(final OutputStream outputStream, final int bitsPerValue, final int bufferSize) {
         outStream = outputStream;
 
         this.bitsPerValue = bitsPerValue;
diff --git a/src/main/java/cz/it4i/qcmp/io/RawDataIO.java b/src/main/java/cz/it4i/qcmp/io/RawDataIO.java
new file mode 100644
index 0000000000000000000000000000000000000000..fade99a0fcb48eb276bb55b8d34fcb0c73dc49a7
--- /dev/null
+++ b/src/main/java/cz/it4i/qcmp/io/RawDataIO.java
@@ -0,0 +1,34 @@
+package cz.it4i.qcmp.io;
+
+import cz.it4i.qcmp.data.ImageU16;
+import cz.it4i.qcmp.utilities.TypeConverter;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class RawDataIO {
+
+    public static void writeImageU16(final String rawFile,
+                                     final ImageU16 image,
+                                     final boolean littleEndian) throws IOException {
+        final byte[] buffer = TypeConverter.unsignedShortArrayToByteArray(image.getData(), littleEndian);
+        writeBytesToFile(rawFile, buffer);
+    }
+
+    public static void writeDataI32(final String rawFile,
+                                    final int[] differenceData,
+                                    final boolean littleEndian) throws IOException {
+        final byte[] buffer = TypeConverter.intArrayToByteArray(differenceData, littleEndian);
+        writeBytesToFile(rawFile, buffer);
+    }
+
+    public static void writeBytesToFile(final String rawFile,
+                                        final byte[] buffer) throws IOException {
+        final FileOutputStream fileStream = new FileOutputStream(rawFile, false);
+        fileStream.write(buffer, 0, buffer.length);
+        fileStream.flush();
+        fileStream.close();
+    }
+
+
+}
diff --git a/src/main/java/azgracompress/io/loader/BasicLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java
similarity index 99%
rename from src/main/java/azgracompress/io/loader/BasicLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java
index f3b7867173c6d9684768339daca21161d8c18d60..1ef3ccd85f488d1f080369df93751daf2b77811f 100644
--- a/src/main/java/azgracompress/io/loader/BasicLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/BasicLoader.java
@@ -1,6 +1,6 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
-import azgracompress.data.*;
+import cz.it4i.qcmp.data.*;
 
 import java.io.IOException;
 
diff --git a/src/main/java/azgracompress/io/loader/DataWrappingStrategy.java b/src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java
similarity index 92%
rename from src/main/java/azgracompress/io/loader/DataWrappingStrategy.java
rename to src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java
index fc2015eaee2b5f7489c0ca4882212e19e9bcb71f..2f9faafb951eba9ef12614a65f06125551d9d850 100644
--- a/src/main/java/azgracompress/io/loader/DataWrappingStrategy.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/DataWrappingStrategy.java
@@ -1,4 +1,4 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
 /**
  * What to do when blocks or voxels extend outside the source image. These parameters are based on OpenGL texture wrapping options.
diff --git a/src/main/java/azgracompress/io/loader/FlatBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java
similarity index 94%
rename from src/main/java/azgracompress/io/loader/FlatBufferLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java
index 58c145d840f0f31efb91cd34dfa08e9781c8680d..023c76d42417aa131412f1c5bcbf9a93bb7274d0 100644
--- a/src/main/java/azgracompress/io/loader/FlatBufferLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/FlatBufferLoader.java
@@ -1,10 +1,10 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.io.FlatBufferInputData;
-import azgracompress.utilities.TypeConverter;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.FlatBufferInputData;
+import cz.it4i.qcmp.utilities.TypeConverter;
 
 import java.io.IOException;
 import java.util.Arrays;
diff --git a/src/main/java/azgracompress/io/loader/IPlaneLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java
similarity index 95%
rename from src/main/java/azgracompress/io/loader/IPlaneLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java
index 5db29c5eeb5e0e133848aa896f002de1b8c383be..9352e1f51fcf31fa80b26ca0853f7e6836033c9e 100644
--- a/src/main/java/azgracompress/io/loader/IPlaneLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/IPlaneLoader.java
@@ -1,10 +1,10 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
-import azgracompress.compression.CompressionOptions;
-import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.compression.CompressionOptions;
+import cz.it4i.qcmp.compression.exception.ImageCompressionException;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
 
 import java.io.IOException;
 
@@ -165,7 +165,7 @@ public interface IPlaneLoader {
                     throw new ImageCompressionException("Invalid QuantizationType '" + options.getQuantizationType().toString() + "'");
                 }
             }
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new ImageCompressionException("Unable to load vectors QuantizationType=" + options.getQuantizationType(), e);
         }
     }
diff --git a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java
similarity index 93%
rename from src/main/java/azgracompress/io/loader/ImageJBufferLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java
index 25c1d4e02e8358be0c1126680c41941cc0751197..259964b0fd87c59fb69304a6e9e6ab3ba7257c3f 100644
--- a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/ImageJBufferLoader.java
@@ -1,11 +1,11 @@
-package azgracompress.io.loader;
-
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.io.BufferInputData;
-import azgracompress.io.InputData;
-import azgracompress.utilities.TypeConverter;
+package cz.it4i.qcmp.io.loader;
+
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.BufferInputData;
+import cz.it4i.qcmp.io.InputData;
+import cz.it4i.qcmp.utilities.TypeConverter;
 
 import java.io.IOException;
 import java.util.Arrays;
diff --git a/src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java b/src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java
similarity index 83%
rename from src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java
rename to src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java
index b34f67e726a83bfe90f1113fe3570331c2c5076e..e35ff329969de533a8b22e82f2660cd29ffc3bf2 100644
--- a/src/main/java/azgracompress/io/loader/PlaneLoaderFactory.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/PlaneLoaderFactory.java
@@ -1,9 +1,9 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
-import azgracompress.io.BufferInputData;
-import azgracompress.io.FileInputData;
-import azgracompress.io.FlatBufferInputData;
-import azgracompress.io.InputData;
+import cz.it4i.qcmp.io.BufferInputData;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.io.FlatBufferInputData;
+import cz.it4i.qcmp.io.InputData;
 
 public final class PlaneLoaderFactory {
 
diff --git a/src/main/java/azgracompress/io/loader/RawDataLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java
similarity index 95%
rename from src/main/java/azgracompress/io/loader/RawDataLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java
index 7dc0e781c5c54ef09b654788c5c04f2cd889fc33..b699e3a4e81cdd8fd29be414355967d5d3327092 100644
--- a/src/main/java/azgracompress/io/loader/RawDataLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/RawDataLoader.java
@@ -1,10 +1,10 @@
-package azgracompress.io.loader;
+package cz.it4i.qcmp.io.loader;
 
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.io.FileInputData;
-import azgracompress.utilities.TypeConverter;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.utilities.TypeConverter;
 
 import java.io.BufferedInputStream;
 import java.io.DataInputStream;
diff --git a/src/main/java/azgracompress/io/loader/SCIFIOLoader.java b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java
similarity index 84%
rename from src/main/java/azgracompress/io/loader/SCIFIOLoader.java
rename to src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java
index 7b4d0128f5f70f2deca0be8068672bd5442e7b11..aaf7e86d9440257819a850ae0be3219e84cfdc48 100644
--- a/src/main/java/azgracompress/io/loader/SCIFIOLoader.java
+++ b/src/main/java/cz/it4i/qcmp/io/loader/SCIFIOLoader.java
@@ -1,11 +1,11 @@
-package azgracompress.io.loader;
-
-import azgracompress.ScifioWrapper;
-import azgracompress.data.Range;
-import azgracompress.data.V2i;
-import azgracompress.data.V3i;
-import azgracompress.io.FileInputData;
-import azgracompress.utilities.TypeConverter;
+package cz.it4i.qcmp.io.loader;
+
+import cz.it4i.qcmp.ScifioWrapper;
+import cz.it4i.qcmp.data.Range;
+import cz.it4i.qcmp.data.V2i;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.io.FileInputData;
+import cz.it4i.qcmp.utilities.TypeConverter;
 import io.scif.FormatException;
 import io.scif.Reader;
 
@@ -31,17 +31,17 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader {
 
     @Override
     public int[] loadPlaneData(final int plane) throws IOException {
-        byte[] planeBytes;
+        final byte[] planeBytes;
         try {
             planeBytes = reader.openPlane(0, plane).getBytes();
-        } catch (FormatException e) {
+        } catch (final FormatException e) {
             throw new IOException("Unable to open plane with the reader. " + e.getMessage());
         }
         return TypeConverter.unsignedShortBytesToIntArray(planeBytes);
     }
 
     @Override
-    public int[] loadPlanesU16Data(int[] planes) throws IOException {
+    public int[] loadPlanesU16Data(final int[] planes) throws IOException {
         if (planes.length < 1) {
             return new int[0];
         } else if (planes.length == 1) {
@@ -57,7 +57,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader {
             throw new IOException("Integer count is too big.");
         }
 
-        int[] values = new int[(int) totalValueCount];
+        final int[] values = new int[(int) totalValueCount];
         Arrays.sort(planes);
 
         byte[] planeBytes;
@@ -66,7 +66,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader {
 
             try {
                 planeBytes = reader.openPlane(0, plane).getBytes();
-            } catch (FormatException e) {
+            } catch (final FormatException e) {
                 throw new IOException("Unable to open plane.");
             }
             if (planeBytes.length != planeDataSize) {
@@ -88,12 +88,12 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader {
             throw new IOException("FileSize is too big.");
         }
 
-        int[] values = new int[(int) dataSize];
+        final int[] values = new int[(int) dataSize];
         byte[] planeBytes;
         for (int plane = 0; plane < imageDims.getZ(); plane++) {
             try {
                 planeBytes = reader.openPlane(0, plane).getBytes();
-            } catch (FormatException e) {
+            } catch (final FormatException e) {
                 throw new IOException("Unable to open plane.");
             }
             if (planeBytes.length != 2 * planePixelCount) {
@@ -111,7 +111,7 @@ public final class SCIFIOLoader extends BasicLoader implements IPlaneLoader {
     }
 
     @Override
-    public int[][] loadBlocks(V2i blockDim, Range<Integer> planeRange) throws IOException {
+    public int[][] loadBlocks(final V2i blockDim, final Range<Integer> planeRange) throws IOException {
         return loadBlocksImplByLoadPlaneData(blockDim, planeRange);
     }
 
diff --git a/src/main/java/azgracompress/kdtree/KDNode.java b/src/main/java/cz/it4i/qcmp/kdtree/KDNode.java
similarity index 97%
rename from src/main/java/azgracompress/kdtree/KDNode.java
rename to src/main/java/cz/it4i/qcmp/kdtree/KDNode.java
index 026ca066e96cbc94001f6ebb87e20eeff562b7d2..9f075431ede389f70d765e2c2cf742b629849c37 100644
--- a/src/main/java/azgracompress/kdtree/KDNode.java
+++ b/src/main/java/cz/it4i/qcmp/kdtree/KDNode.java
@@ -1,4 +1,4 @@
-package azgracompress.kdtree;
+package cz.it4i.qcmp.kdtree;
 
 public class KDNode {
     private final int discriminator;
diff --git a/src/main/java/azgracompress/kdtree/KDTree.java b/src/main/java/cz/it4i/qcmp/kdtree/KDTree.java
similarity index 91%
rename from src/main/java/azgracompress/kdtree/KDTree.java
rename to src/main/java/cz/it4i/qcmp/kdtree/KDTree.java
index 4c286de39ad05ab2184bbb624885a46f7868a542..3f1ee4044f80baa17f133c5b63fff2abf7a6bf3e 100644
--- a/src/main/java/azgracompress/kdtree/KDTree.java
+++ b/src/main/java/cz/it4i/qcmp/kdtree/KDTree.java
@@ -1,4 +1,4 @@
-package azgracompress.kdtree;
+package cz.it4i.qcmp.kdtree;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -53,7 +53,7 @@ public class KDTree {
         private final KDNode node;
         private final double distance;
 
-        private NodeWithDistance(KDNode node, double distance) {
+        private NodeWithDistance(final KDNode node, final double distance) {
             this.node = node;
             this.distance = distance;
         }
@@ -67,7 +67,7 @@ public class KDTree {
         }
 
         @Override
-        public int compareTo(@NotNull KDTree.NodeWithDistance o) {
+        public int compareTo(@NotNull final KDTree.NodeWithDistance o) {
             return Double.compare(distance, o.distance);
         }
     }
@@ -87,14 +87,14 @@ public class KDTree {
 
     public int findNearestBBF(final int[] queryVector, final int maxE) {
 
-        PriorityQueue<NodeWithDistance> priorityQueue = new PriorityQueue<>();
+        final PriorityQueue<NodeWithDistance> priorityQueue = new PriorityQueue<>();
         priorityQueue.add(new NodeWithDistance(root, 0.0));
 
-        BBFSearchInfo searchInfo = new BBFSearchInfo(featureVectors);
+        final BBFSearchInfo searchInfo = new BBFSearchInfo(featureVectors);
         int tryIndex = 0;
         int partition, discriminator;
         while (!priorityQueue.isEmpty() && tryIndex < maxE) {
-            NodeWithDistance current = priorityQueue.remove();
+            final NodeWithDistance current = priorityQueue.remove();
             if (current.getNode().isTerminal()) {
                 ((TerminalKDNode) current.getNode()).findNearestNeighborInBucket(queryVector, searchInfo);
                 ++tryIndex;
diff --git a/src/main/java/azgracompress/kdtree/KDTreeBuilder.java b/src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java
similarity index 96%
rename from src/main/java/azgracompress/kdtree/KDTreeBuilder.java
rename to src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java
index ace1feead1911c68997e09ae3f9193436f59f7ab..e14b8831d153b006a4017e9227fd9d56340e7e7e 100644
--- a/src/main/java/azgracompress/kdtree/KDTreeBuilder.java
+++ b/src/main/java/cz/it4i/qcmp/kdtree/KDTreeBuilder.java
@@ -1,4 +1,4 @@
-package azgracompress.kdtree;
+package cz.it4i.qcmp.kdtree;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -69,7 +69,7 @@ public class KDTreeBuilder {
             return makeTerminalNode(indices);
         }
 
-        int dimensionIndex = findDimensionWithGreatestVariance(indices);
+        final int dimensionIndex = findDimensionWithGreatestVariance(indices);
         final int median = calculateKeyMedian(indices, dimensionIndex);
 
         // Divide records in one method to hi and lo.
@@ -87,8 +87,8 @@ public class KDTreeBuilder {
      * @return Divided vectors.
      */
     private DividedRecords divideRecords(final int[] indices, final int median, final int dimension) {
-        ArrayList<Integer> loIndices = new ArrayList<>();
-        ArrayList<Integer> hiIndices = new ArrayList<>();
+        final ArrayList<Integer> loIndices = new ArrayList<>();
+        final ArrayList<Integer> hiIndices = new ArrayList<>();
 
         for (final int fVecIndex : indices) {
             if (featureVectors[fVecIndex][dimension] <= median) {
diff --git a/src/main/java/azgracompress/kdtree/TerminalKDNode.java b/src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java
similarity index 92%
rename from src/main/java/azgracompress/kdtree/TerminalKDNode.java
rename to src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java
index 0dac9c49a343d8f2927e9e8411c4372322fd285d..8ec2f0f6dc7fd216af3cb4ea4e0467dde90334a4 100644
--- a/src/main/java/azgracompress/kdtree/TerminalKDNode.java
+++ b/src/main/java/cz/it4i/qcmp/kdtree/TerminalKDNode.java
@@ -1,6 +1,6 @@
-package azgracompress.kdtree;
+package cz.it4i.qcmp.kdtree;
 
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.utilities.Utils;
 
 public class TerminalKDNode extends KDNode {
 
diff --git a/src/main/java/azgracompress/quantization/QTrainIteration.java b/src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java
similarity index 76%
rename from src/main/java/azgracompress/quantization/QTrainIteration.java
rename to src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java
index 0f6d44498f5017955cacdbcc20fefc812518dc5d..2fd613fdaddb1bcad6ffff66e0ad5633c0625ca6 100644
--- a/src/main/java/azgracompress/quantization/QTrainIteration.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/QTrainIteration.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization;
+package cz.it4i.qcmp.quantization;
 
 public class QTrainIteration {
     private final int iteration;
@@ -6,7 +6,7 @@ public class QTrainIteration {
     private final double PSNR;
 
 
-    public QTrainIteration(int iteration, double mse, double psnr) {
+    public QTrainIteration(final int iteration, final double mse, final double psnr) {
         this.iteration = iteration;
         this.mse = mse;
         this.PSNR = psnr;
diff --git a/src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java
similarity index 88%
rename from src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java
rename to src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java
index 0ace21c8b2a416a63cf1e151a61ad26ce2808bb3..0dc3f31dfff51768f2eec7a8ce1e99d634c39f92 100644
--- a/src/main/java/azgracompress/quantization/scalar/LloydMaxU16ScalarQuantization.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/LloydMaxU16ScalarQuantization.java
@@ -1,11 +1,11 @@
-package azgracompress.quantization.scalar;
+package cz.it4i.qcmp.quantization.scalar;
 
-import azgracompress.U16;
-import azgracompress.compression.listeners.IStatusListener;
-import azgracompress.quantization.QTrainIteration;
-import azgracompress.utilities.MinMaxResult;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.compression.listeners.IStatusListener;
+import cz.it4i.qcmp.quantization.QTrainIteration;
+import cz.it4i.qcmp.utilities.MinMaxResult;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -13,7 +13,7 @@ import java.util.Arrays;
 
 public class LloydMaxU16ScalarQuantization {
     private final int[] trainingData;
-    private int codebookSize;
+    private final int codebookSize;
 
     private int dataMin;
     private int dataMax;
@@ -48,7 +48,7 @@ public class LloydMaxU16ScalarQuantization {
 
         boundaryPoints = new int[codebookSize + 1];
 
-        MinMaxResult<Integer> minMax = Utils.getMinAndMax(trainingData);
+        final MinMaxResult<Integer> minMax = Utils.getMinAndMax(trainingData);
         dataMin = minMax.getMin();
         dataMax = minMax.getMax();
         final int dataSpan = dataMax - dataMin;
@@ -56,7 +56,7 @@ public class LloydMaxU16ScalarQuantization {
 
         boundaryPoints[0] = dataMin;
         boundaryPoints[codebookSize] = dataMax;
-        double intervalSize = (double) (dataSpan) / (double) codebookSize;
+        final double intervalSize = (double) (dataSpan) / (double) codebookSize;
         for (int i = 0; i < codebookSize; i++) {
             centroids[i] = (int) Math.floor(((double) i + 0.5) * intervalSize);
         }
@@ -87,7 +87,7 @@ public class LloydMaxU16ScalarQuantization {
 
     private void initializeCentroids() {
         int lowerBound, upperBound;
-        double[] centroidPdf = new double[codebookSize];
+        final double[] centroidPdf = new double[codebookSize];
         for (int centroidIndex = 0; centroidIndex < codebookSize; centroidIndex++) {
             lowerBound = boundaryPoints[centroidIndex];
             upperBound = boundaryPoints[centroidIndex + 1];
@@ -150,8 +150,8 @@ public class LloydMaxU16ScalarQuantization {
         if (workerCount > 1) {
             final int workSize = trainingData.length / workerCount;
 
-            RunnableLloydMseCalc[] runnables = new RunnableLloydMseCalc[workerCount];
-            Thread[] workers = new Thread[workerCount];
+            final RunnableLloydMseCalc[] runnables = new RunnableLloydMseCalc[workerCount];
+            final Thread[] workers = new Thread[workerCount];
             for (int wId = 0; wId < workerCount; wId++) {
                 final int fromIndex = wId * workSize;
                 final int toIndex = (wId == workerCount - 1) ? trainingData.length : (workSize + (wId * workSize));
@@ -172,12 +172,12 @@ public class LloydMaxU16ScalarQuantization {
                     addWorkerFrequencies(runnables[wId].getFrequencies());
                     mse += runnables[wId].getMse();
                 }
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 e.printStackTrace();
             }
         } else {
             for (final int trainingDatum : trainingData) {
-                int quantizedValue = quantize(trainingDatum);
+                final int quantizedValue = quantize(trainingDatum);
                 mse += Math.pow((double) trainingDatum - (double) quantizedValue, 2);
             }
         }
@@ -206,12 +206,12 @@ public class LloydMaxU16ScalarQuantization {
         initializeProbabilityDensityFunction();
 
 
-        double currMAE = 1.0;
+        final double currMAE = 1.0;
         double prevMse = 1.0;
         double currentMse = 1.0;
         double psnr;
 
-        ArrayList<QTrainIteration> solutionHistory = new ArrayList<>();
+        final ArrayList<QTrainIteration> solutionHistory = new ArrayList<>();
 
         recalculateBoundaryPoints();
         initializeCentroids();
@@ -225,7 +225,7 @@ public class LloydMaxU16ScalarQuantization {
 
         double mseImprovement = 1;
         int iteration = 0;
-        Stopwatch stopwatch = new Stopwatch();
+        final Stopwatch stopwatch = new Stopwatch();
         do {
             stopwatch.restart();
             for (int i = 0; i < RECALCULATE_N_TIMES; i++) {
diff --git a/src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java
similarity index 87%
rename from src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java
rename to src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java
index d4bdc58b0ef319ae6b4cde1a06bf2caa274fedef..f3ead2076c28ab0564499b530501b985e4825c49 100644
--- a/src/main/java/azgracompress/quantization/scalar/RunnableLloydMseCalc.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/RunnableLloydMseCalc.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization.scalar;
+package cz.it4i.qcmp.quantization.scalar;
 
 public class RunnableLloydMseCalc implements Runnable {
     final int[] trainingData;
@@ -10,7 +10,7 @@ public class RunnableLloydMseCalc implements Runnable {
     double mse = 0.0;
     final long[] frequencies;
 
-    public RunnableLloydMseCalc(int[] trainingData, int fromIndex, int toIndex, int[] centroids, int[] boundaryPoints,
+    public RunnableLloydMseCalc(final int[] trainingData, final int fromIndex, final int toIndex, final int[] centroids, final int[] boundaryPoints,
                                 final int codebookSize) {
         this.trainingData = trainingData;
         this.fromIndex = fromIndex;
diff --git a/src/main/java/azgracompress/quantization/scalar/SQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
similarity index 96%
rename from src/main/java/azgracompress/quantization/scalar/SQCodebook.java
rename to src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
index f55749e892de0902a707037fe51b2f83b4b2ec02..ff06d5d2b6241ce9630762a206894972e610ef8a 100644
--- a/src/main/java/azgracompress/quantization/scalar/SQCodebook.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization.scalar;
+package cz.it4i.qcmp.quantization.scalar;
 
 
 /**
diff --git a/src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java
similarity index 85%
rename from src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java
rename to src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java
index 480b3d99b2e4e577c3e67d470e071169a481d373..a8133f780db797047c743ee2c2723cd9da1a6e3f 100644
--- a/src/main/java/azgracompress/quantization/scalar/ScalarQuantizer.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/ScalarQuantizer.java
@@ -1,12 +1,12 @@
-package azgracompress.quantization.scalar;
+package cz.it4i.qcmp.quantization.scalar;
 
-import azgracompress.U16;
+import cz.it4i.qcmp.U16;
 
 public class ScalarQuantizer {
     private final int min;
     private final int max;
     private final SQCodebook codebook;
-    private int[] boundaryPoints;
+    private final int[] boundaryPoints;
 
     public ScalarQuantizer(final int min, final int max, final SQCodebook codebook) {
         this.codebook = codebook;
@@ -21,16 +21,16 @@ public class ScalarQuantizer {
         this(U16.Min, U16.Max, codebook);
     }
 
-    public int[] quantize(int[] data) {
-        int[] result = new int[data.length];
+    public int[] quantize(final int[] data) {
+        final int[] result = new int[data.length];
         for (int i = 0; i < data.length; i++) {
             result[i] = quantize(data[i]);
         }
         return result;
     }
 
-    public int[] quantizeIntoIndices(int[] data, final int maxWorkerCount) {
-        int[] indices = new int[data.length];
+    public int[] quantizeIntoIndices(final int[] data, final int maxWorkerCount) {
+        final int[] indices = new int[data.length];
         // Speedup?
         if (maxWorkerCount == 1) {
             for (int i = 0; i < data.length; i++) {
@@ -40,7 +40,7 @@ public class ScalarQuantizer {
         } else {
             // NOTE(Moravec): This function is fast enough single thread. So we use max 2 threads.
             final int workerCount = Math.min(maxWorkerCount, 2);
-            Thread[] workers = new Thread[workerCount];
+            final Thread[] workers = new Thread[workerCount];
             final int workSize = data.length / workerCount;
 
             for (int wId = 0; wId < workerCount; wId++) {
@@ -59,7 +59,7 @@ public class ScalarQuantizer {
                 for (int wId = 0; wId < workerCount; wId++) {
                     workers[wId].join();
                 }
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 e.printStackTrace();
             }
         }
@@ -92,7 +92,7 @@ public class ScalarQuantizer {
     public double getMse(final int[] data) {
         double mse = 0.0;
         for (int i = 0; i < data.length; i++) {
-            int quantizedValue = quantize(data[i]);
+            final int quantizedValue = quantize(data[i]);
             mse += Math.pow(((double) data[i] - (double) quantizedValue), 2);
         }
         mse /= (double) data.length;
diff --git a/src/main/java/azgracompress/quantization/vector/EntryInfo.java b/src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java
similarity index 90%
rename from src/main/java/azgracompress/quantization/vector/EntryInfo.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java
index 12921793e2dcae96fc2bceb764346d76b3ef5543..c43f7fc13a310b934fcab3887d4d6820e182fc00 100644
--- a/src/main/java/azgracompress/quantization/vector/EntryInfo.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/EntryInfo.java
@@ -1,6 +1,6 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
-import azgracompress.U16;
+import cz.it4i.qcmp.U16;
 
 import java.util.Arrays;
 
@@ -41,7 +41,7 @@ public class EntryInfo {
      * @return Centroid of the vectors.
      */
     public int[] calculateCentroid() {
-        int[] centroid = new int[vectorSize];
+        final int[] centroid = new int[vectorSize];
         for (int dim = 0; dim < vectorSize; dim++) {
             centroid[dim] = (int) Math.round(dimensionSum[dim] / (double) vectorCount);
         }
@@ -54,7 +54,7 @@ public class EntryInfo {
      * @return Perturbation vector of the vectors.
      */
     public double[] calculatePRTVector() {
-        double[] prtV = new double[vectorSize];
+        final double[] prtV = new double[vectorSize];
         for (int dim = 0; dim < vectorSize; dim++) {
             prtV[dim] = ((double) max[dim] - (double) min[dim]) / LBGVectorQuantizer.PRT_VECTOR_DIVIDER;
         }
diff --git a/src/main/java/azgracompress/quantization/vector/LBGResult.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java
similarity index 92%
rename from src/main/java/azgracompress/quantization/vector/LBGResult.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java
index 4b72a79698c4241f4447ac50314f54829553f49d..2bb63affb7f42f6161eed7a94af3dea96db241dd 100644
--- a/src/main/java/azgracompress/quantization/vector/LBGResult.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGResult.java
@@ -1,6 +1,6 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.V3i;
 
 public class LBGResult {
 
diff --git a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java
similarity index 89%
rename from src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java
index 0ad49cfe228318c31965150924253292089dda80..65770041ef20370eac7ec2631af8a720589c7e9b 100644
--- a/src/main/java/azgracompress/quantization/vector/LBGVectorQuantizer.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LBGVectorQuantizer.java
@@ -1,10 +1,10 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
-import azgracompress.U16;
-import azgracompress.compression.listeners.IStatusListener;
-import azgracompress.data.V3i;
-import azgracompress.utilities.Stopwatch;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.compression.listeners.IStatusListener;
+import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.utilities.Stopwatch;
+import cz.it4i.qcmp.utilities.Utils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -23,7 +23,7 @@ public class LBGVectorQuantizer {
     private final TrainingVector[] trainingVectors;
     private final VectorDistanceMetric metric = VectorDistanceMetric.Euclidean;
 
-    private long[] frequencies;
+    private final long[] frequencies;
 
     private IStatusListener statusListener = null;
     private double _mse = 0.0;
@@ -93,7 +93,7 @@ public class LBGVectorQuantizer {
         reportStatus("There is only %d unique vectors. Creating codebook from unique vectors...",
                      uniqueTrainingVectors.size());
         final int[][] codebook = new int[codebookSize][vectorSize];
-        int[] zeroEntry = new int[vectorSize];
+        final int[] zeroEntry = new int[vectorSize];
         Arrays.fill(zeroEntry, 0);
         for (int i = 0; i < codebookSize; i++) {
             if (i < uniqueVectorCount) {
@@ -114,13 +114,13 @@ public class LBGVectorQuantizer {
      * @return Result of the search.
      */
     public LBGResult findOptimalCodebook() {
-        Stopwatch stopwatch = Stopwatch.startNew("LBG::findOptimalCodebook()");
+        final Stopwatch stopwatch = Stopwatch.startNew("LBG::findOptimalCodebook()");
 
         if (uniqueVectorCount < codebookSize) {
             return createCodebookFromUniqueVectors();
         }
 
-        LearningCodebookEntry[] codebook = initializeCodebook();
+        final LearningCodebookEntry[] codebook = initializeCodebook();
         reportStatus("LBG::findOptimalCodebook() - Got initial codebook. Improving it...");
 
         LBG(codebook, EPSILON * 0.1);
@@ -183,17 +183,17 @@ public class LBGVectorQuantizer {
         if (workerCount > 1) {
             // Reset the global mse
             _mse = 0.0;
-            Thread[] workers = new Thread[workerCount];
+            final Thread[] workers = new Thread[workerCount];
             final int workSize = trainingVectors.length / workerCount;
             for (int wId = 0; wId < workerCount; wId++) {
                 final int fromIndex = wId * workSize;
                 final int toIndex = (wId == workerCount - 1) ? trainingVectors.length : (workSize + (wId * workSize));
 
                 workers[wId] = new Thread(() -> {
-                    long[] workerFrequencies = new long[codebook.length];
-                    VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions,
-                                                                                   codebook,
-                                                                                   frequencies));
+                    final long[] workerFrequencies = new long[codebook.length];
+                    final VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions,
+                                                                                         codebook,
+                                                                                         frequencies));
 
                     double threadMse = 0.0;
                     int[] vector;
@@ -224,14 +224,14 @@ public class LBGVectorQuantizer {
                 for (int wId = 0; wId < workerCount; wId++) {
                     workers[wId].join();
                 }
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 e.printStackTrace();
             }
             mse = _mse / (double) workerCount;
         } else {
-            VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions,
-                                                                           codebook,
-                                                                           frequencies));
+            final VectorQuantizer quantizer = new VectorQuantizer(new VQCodebook(vectorDimensions,
+                                                                                 codebook,
+                                                                                 frequencies));
             int qIndex;
             int[] qVector;
             for (final TrainingVector trV : trainingVectors) {
@@ -256,9 +256,9 @@ public class LBGVectorQuantizer {
     private double[] getPerturbationVector(final TrainingVector[] vectors) {
 
         // Max is initialized to zero that is ok.
-        int[] max = new int[vectorSize];
+        final int[] max = new int[vectorSize];
         // We have to initialize min to Max values.
-        int[] min = new int[vectorSize];
+        final int[] min = new int[vectorSize];
         Arrays.fill(min, U16.Max);
 
         for (final TrainingVector v : vectors) {
@@ -272,7 +272,7 @@ public class LBGVectorQuantizer {
             }
         }
 
-        double[] perturbationVector = new double[vectorSize];
+        final double[] perturbationVector = new double[vectorSize];
         for (int i = 0; i < vectorSize; i++) {
             perturbationVector[i] = ((double) max[i] - (double) min[i]) / PRT_VECTOR_DIVIDER;
         }
@@ -285,14 +285,14 @@ public class LBGVectorQuantizer {
      * @return Initial codebook entry.
      */
     private LearningCodebookEntry createInitialEntry() {
-        double[] vectorSum = new double[vectorSize];
+        final double[] vectorSum = new double[vectorSize];
 
         for (final TrainingVector trainingVector : trainingVectors) {
             for (int i = 0; i < vectorSize; i++) {
                 vectorSum[i] += (double) trainingVector.getVector()[i];
             }
         }
-        int[] result = new int[vectorSize];
+        final int[] result = new int[vectorSize];
         for (int i = 0; i < vectorSize; i++) {
             result[i] = (int) Math.round(vectorSum[i] / (double) trainingVectors.length);
         }
@@ -311,11 +311,11 @@ public class LBGVectorQuantizer {
 
         while (currentCodebookSize != codebookSize) {
             int cbIndex = 0;
-            LearningCodebookEntry[] newCodebook = new LearningCodebookEntry[currentCodebookSize * 2];
+            final LearningCodebookEntry[] newCodebook = new LearningCodebookEntry[currentCodebookSize * 2];
 
             // Split each entry in codebook with fixed perturbation vector.
             for (final LearningCodebookEntry entryToSplit : codebook) {
-                double[] prtV;
+                final double[] prtV;
                 if (codebook.length == 1) {
                     assert (trainingVectors.length > 0) :
                             "There are no vectors from which to create perturbation " + "vector";
@@ -339,7 +339,7 @@ public class LBGVectorQuantizer {
                     newCodebook[cbIndex++] = entryToSplit;
 
                     // Create another codebook entry from perturbation vector.
-                    int[] entryFromPrtVecValues = new int[prtV.length];
+                    final int[] entryFromPrtVecValues = new int[prtV.length];
                     for (int i = 0; i < prtV.length; i++) {
                         final int value = (int) Math.floor(prtV[i]);
                         //                        assert (value >= 0) : "value is too low!";
@@ -360,8 +360,8 @@ public class LBGVectorQuantizer {
                     newCodebook[cbIndex++] = entryToSplit;
                     newCodebook[cbIndex++] = new LearningCodebookEntry(randomEntryValues);
                 } else {
-                    int[] left = new int[prtV.length];
-                    int[] right = new int[prtV.length];
+                    final int[] left = new int[prtV.length];
+                    final int[] right = new int[prtV.length];
                     for (int i = 0; i < prtV.length; i++) {
                         final int lVal = (int) ((double) entryToSplit.getVector()[i] - prtV[i]);
                         final int rVal = (int) ((double) entryToSplit.getVector()[i] + prtV[i]);
@@ -399,8 +399,8 @@ public class LBGVectorQuantizer {
      * @return Generated random vector.
      */
     private int[] generateRandomVector() {
-        int[] randomVector = new int[vectorSize];
-        Random rnd = new Random();
+        final int[] randomVector = new int[vectorSize];
+        final Random rnd = new Random();
         for (int i = 0; i < vectorSize; i++) {
             randomVector[i] = rnd.nextInt(U16.Max + 1);
         }
@@ -408,8 +408,8 @@ public class LBGVectorQuantizer {
     }
 
     private double[] generateRandomVectorDouble() {
-        double[] randomVector = new double[vectorSize];
-        Random rnd = new Random();
+        final double[] randomVector = new double[vectorSize];
+        final Random rnd = new Random();
         for (int i = 0; i < vectorSize; i++) {
             randomVector[i] = rnd.nextInt(U16.Max + 1);
         }
@@ -422,7 +422,7 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Codebook to improve.
      */
-    private void LBG(LearningCodebookEntry[] codebook) {
+    private void LBG(final LearningCodebookEntry[] codebook) {
         LBG(codebook, EPSILON);
     }
 
@@ -432,7 +432,7 @@ public class LBGVectorQuantizer {
      * @param codebook Codebook to improve.
      * @param epsilon  Epsilon value.
      */
-    private void LBG(LearningCodebookEntry[] codebook, final double epsilon) {
+    private void LBG(final LearningCodebookEntry[] codebook, final double epsilon) {
         //this.verbose = true;
         double previousDistortion = Double.POSITIVE_INFINITY;
         int iteration = 1;
@@ -446,13 +446,13 @@ public class LBGVectorQuantizer {
 
             // Calculate average distortion of the codebook.
             double avgDistortion = 0;
-            for (LearningCodebookEntry entry : codebook) {
+            for (final LearningCodebookEntry entry : codebook) {
                 avgDistortion += entry.getAverageDistortion();
             }
             avgDistortion /= codebook.length;
 
             // Calculate distortion
-            double distortion = (previousDistortion - avgDistortion) / avgDistortion;
+            final double distortion = (previousDistortion - avgDistortion) / avgDistortion;
             reportStatus("LBG::LBG() - Iteration: %d  Distortion: %.5f", iteration++, distortion);
 
 
@@ -481,7 +481,7 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Vector codebook.
      */
-    private void assignVectorsToClosestEntry(LearningCodebookEntry[] codebook) {
+    private void assignVectorsToClosestEntry(final LearningCodebookEntry[] codebook) {
         //        Stopwatch stopwatch = Stopwatch.startNew("assignVectorsToClosestEntry");
         if (workerCount > 1) {
             parallelAssignVectors(codebook);
@@ -503,18 +503,18 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Vector codebook.
      */
-    private void defaultAssignVectors(LearningCodebookEntry[] codebook) {
+    private void defaultAssignVectors(final LearningCodebookEntry[] codebook) {
         double minDist;
         int closestEntryIndex;
 
-        for (TrainingVector trainingVector : trainingVectors) {
+        for (final TrainingVector trainingVector : trainingVectors) {
             minDist = Double.POSITIVE_INFINITY;
             closestEntryIndex = -1;
 
             for (int entryIndex = 0; entryIndex < codebook.length; entryIndex++) {
-                double entryDistance = VectorQuantizer.distanceBetweenVectors(codebook[entryIndex].getVector(),
-                                                                              trainingVector.getVector(),
-                                                                              metric);
+                final double entryDistance = VectorQuantizer.distanceBetweenVectors(codebook[entryIndex].getVector(),
+                                                                                    trainingVector.getVector(),
+                                                                                    metric);
 
                 if (entryDistance < minDist) {
                     minDist = entryDistance;
@@ -537,10 +537,10 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Vector codebook.
      */
-    private void parallelAssignVectors(LearningCodebookEntry[] codebook) {
-        Thread[] workers = new Thread[workerCount];
+    private void parallelAssignVectors(final LearningCodebookEntry[] codebook) {
+        final Thread[] workers = new Thread[workerCount];
         final int workSize = trainingVectors.length / workerCount;
-        EntryInfo[][] threadEntryInfos = new EntryInfo[workerCount][codebook.length];
+        final EntryInfo[][] threadEntryInfos = new EntryInfo[workerCount][codebook.length];
 
 
         for (int wId = 0; wId < workerCount; wId++) {
@@ -603,13 +603,13 @@ public class LBGVectorQuantizer {
             for (int wId = 0; wId < workerCount; wId++) {
                 workers[wId].join();
             }
-        } catch (InterruptedException e) {
+        } catch (final InterruptedException e) {
             e.printStackTrace();
             assert (false) : "Failed parallel join";
         }
 
         // Combine all thread entry infos to final array distributed to the entries.
-        EntryInfo[] entryInfos = new EntryInfo[codebook.length];
+        final EntryInfo[] entryInfos = new EntryInfo[codebook.length];
         // Assign first thread infos and we can skip it later.
         System.arraycopy(threadEntryInfos[0], 0, entryInfos, 0, codebook.length);
 
@@ -624,7 +624,7 @@ public class LBGVectorQuantizer {
         }
     }
 
-    private void combine(EntryInfo finalEntryInfo, final EntryInfo threadEntryInfo) {
+    private void combine(final EntryInfo finalEntryInfo, final EntryInfo threadEntryInfo) {
         finalEntryInfo.vectorCount += threadEntryInfo.vectorCount;
         finalEntryInfo.distanceSum += threadEntryInfo.distanceSum;
 
@@ -646,10 +646,10 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Vector codebook.
      */
-    private void calculateEntryProperties(LearningCodebookEntry[] codebook) {
+    private void calculateEntryProperties(final LearningCodebookEntry[] codebook) {
 
         int value;
-        EntryInfo[] entryInfos = new EntryInfo[codebook.length];
+        final EntryInfo[] entryInfos = new EntryInfo[codebook.length];
         for (int i = 0; i < entryInfos.length; i++) {
             entryInfos[i] = new EntryInfo(vectorSize);
         }
@@ -685,7 +685,7 @@ public class LBGVectorQuantizer {
      *
      * @param codebook Vector codebook.
      */
-    private void fixEmptyEntries(LearningCodebookEntry[] codebook) {
+    private void fixEmptyEntries(final LearningCodebookEntry[] codebook) {
         int emptyEntryIndex = -1;
         for (int i = 0; i < codebook.length; i++) {
             if (codebook[i].getVectorCount() < 2) {
@@ -720,7 +720,7 @@ public class LBGVectorQuantizer {
      * @param codebook        Vector codebook.
      * @param emptyEntryIndex Index of the empty entry.
      */
-    private boolean fixSingleEmptyEntry(LearningCodebookEntry[] codebook, final int emptyEntryIndex) {
+    private boolean fixSingleEmptyEntry(final LearningCodebookEntry[] codebook, final int emptyEntryIndex) {
         // Find biggest partition.
         int largestEntryIndex = emptyEntryIndex;
         int largestEntrySize = codebook[emptyEntryIndex].getVectorCount();
@@ -745,7 +745,7 @@ public class LBGVectorQuantizer {
                                                                                  codebook[largestEntryIndex].getVectorCount());
 
         // Choose random trainingVector from biggest partition and set it as new entry.
-        int randomIndex = new Random().nextInt(largestPartitionVectors.length);
+        final int randomIndex = new Random().nextInt(largestPartitionVectors.length);
 
         // Plane the new entry on the index of the empty entry.
         codebook[emptyEntryIndex] = new LearningCodebookEntry(largestPartitionVectors[randomIndex].getVector());
@@ -753,8 +753,8 @@ public class LBGVectorQuantizer {
 
         // Speedup - speed the look for closest entry.
 
-        EntryInfo oldEntryInfo = new EntryInfo(vectorSize);
-        EntryInfo newEntryInfo = new EntryInfo(vectorSize);
+        final EntryInfo oldEntryInfo = new EntryInfo(vectorSize);
+        final EntryInfo newEntryInfo = new EntryInfo(vectorSize);
 
         int value, entryIndex;
         double oldDistance, newDistance, distance;
@@ -828,7 +828,7 @@ public class LBGVectorQuantizer {
                 ++count;
             }
         }
-        TrainingVector[] vectors = new TrainingVector[count];
+        final TrainingVector[] vectors = new TrainingVector[count];
 
         for (final TrainingVector trainingVector : trainingVectors) {
             if (trainingVector.getEntryIndex() == entryIndex) {
diff --git a/src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java b/src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java
similarity index 93%
rename from src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java
index 4492e4c90d83658d9512a16e341660bd887e4117..cc13c66538c972c84a48b52276024590ebcf348e 100644
--- a/src/main/java/azgracompress/quantization/vector/LearningCodebookEntry.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/LearningCodebookEntry.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
 public class LearningCodebookEntry {
 
@@ -7,7 +7,7 @@ public class LearningCodebookEntry {
     private double averageDistortion = -1.0f;
     private double[] perturbationVector;
 
-    public LearningCodebookEntry(int[] codebookVector) {
+    public LearningCodebookEntry(final int[] codebookVector) {
         this.codebookVector = codebookVector;
     }
 
diff --git a/src/main/java/azgracompress/quantization/vector/TrainingVector.java b/src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java
similarity index 93%
rename from src/main/java/azgracompress/quantization/vector/TrainingVector.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java
index 8746cdd4b8c91ebde73e73fa83d16e226d552566..95df967e3755b965d44039b9c3de9eb9f2da3d7c 100644
--- a/src/main/java/azgracompress/quantization/vector/TrainingVector.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/TrainingVector.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
 import java.util.Arrays;
 
@@ -11,7 +11,7 @@ public class TrainingVector {
     private int entryIndex = -1;
     private double entryDistance = Double.POSITIVE_INFINITY;
 
-    public TrainingVector(int[] vector) {
+    public TrainingVector(final int[] vector) {
         this.vector = vector;
     }
 
diff --git a/src/main/java/azgracompress/quantization/vector/VQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
similarity index 92%
rename from src/main/java/azgracompress/quantization/vector/VQCodebook.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
index d56fc6b3d611d92f5493fb64ca2119b6e7e1f17f..a000184b28f18c7ef0008afd3b20404e213be1f1 100644
--- a/src/main/java/azgracompress/quantization/vector/VQCodebook.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
@@ -1,6 +1,6 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
-import azgracompress.data.V3i;
+import cz.it4i.qcmp.data.V3i;
 
 /**
  * Codebook for vector quantizer.
@@ -14,7 +14,7 @@ public class VQCodebook {
     /**
      * Absolute frequencies of quantization vectors.
      */
-    private long[] vectorFrequencies;
+    private final long[] vectorFrequencies;
 
     /**
      * Size of the codebook.
diff --git a/src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java
similarity index 65%
rename from src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java
index 565fb932e8b86dc56726ab7ce9aee02a0a34d003..ae2ce1b292ba2a1fc52c9e1172e8b1ae3025dee6 100644
--- a/src/main/java/azgracompress/quantization/vector/VectorDistanceMetric.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorDistanceMetric.java
@@ -1,4 +1,4 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
 public enum VectorDistanceMetric {
     Manhattan,
diff --git a/src/main/java/azgracompress/quantization/vector/VectorQuantizer.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java
similarity index 97%
rename from src/main/java/azgracompress/quantization/vector/VectorQuantizer.java
rename to src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java
index 8806b18f56a9f35d13513dcf6d04f3d558b11f3c..6f987d87c5180623fa3d7a3beefcc8424424cb79 100644
--- a/src/main/java/azgracompress/quantization/vector/VectorQuantizer.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VectorQuantizer.java
@@ -1,8 +1,8 @@
-package azgracompress.quantization.vector;
+package cz.it4i.qcmp.quantization.vector;
 
-import azgracompress.kdtree.KDTree;
-import azgracompress.kdtree.KDTreeBuilder;
-import azgracompress.utilities.Utils;
+import cz.it4i.qcmp.kdtree.KDTree;
+import cz.it4i.qcmp.kdtree.KDTreeBuilder;
+import cz.it4i.qcmp.utilities.Utils;
 
 public class VectorQuantizer {
 
diff --git a/src/main/java/azgracompress/utilities/ColorConsole.java b/src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java
similarity index 98%
rename from src/main/java/azgracompress/utilities/ColorConsole.java
rename to src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java
index 2117887df2e0298b40bc15f6f9d7b9b56ec8aef4..d41b65963ff2109a08d0f4dd32f9b1115ffd2ec6 100644
--- a/src/main/java/azgracompress/utilities/ColorConsole.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/ColorConsole.java
@@ -1,4 +1,4 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
 public final class ColorConsole {
     private static final String ANSI_RESET = "\u001B[0m";
diff --git a/src/main/java/azgracompress/utilities/Means.java b/src/main/java/cz/it4i/qcmp/utilities/Means.java
similarity index 76%
rename from src/main/java/azgracompress/utilities/Means.java
rename to src/main/java/cz/it4i/qcmp/utilities/Means.java
index fc96e0dca493b74ab4fb855748f7fc98c18cda79..616872e765ac182da5118e1ccbf2d06a5d1f7b7c 100644
--- a/src/main/java/azgracompress/utilities/Means.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/Means.java
@@ -1,15 +1,15 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
 import java.util.ArrayList;
 
 public class Means {
     public static double arithmeticMean(final ArrayList<Double> values) {
         double sum = 0.0;
-        for (double val : values) {
+        for (final double val : values) {
             sum += val;
         }
 
-        double result = sum / (double) values.size();
+        final double result = sum / (double) values.size();
         return result;
     }
 
@@ -17,12 +17,12 @@ public class Means {
         double numerator = 0.0;
         double denominator = 0.0;
 
-        for (double val : values) {
+        for (final double val : values) {
             numerator += Math.pow(val, 2);
             denominator += val;
         }
 
-        double result = numerator / denominator;
+        final double result = numerator / denominator;
         return result;
     }
 
@@ -38,7 +38,7 @@ public class Means {
             denominator += (weights[i] * values.get(i));
         }
 
-        double result = numerator / denominator;
+        final double result = numerator / denominator;
         return result;
     }
 }
diff --git a/src/main/java/azgracompress/utilities/MinMaxResult.java b/src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java
similarity index 75%
rename from src/main/java/azgracompress/utilities/MinMaxResult.java
rename to src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java
index 5a37e757d13c921fe9b301b9e9f8189742bd46f4..5181632c15951f61131e50b592064ed56e9b58e7 100644
--- a/src/main/java/azgracompress/utilities/MinMaxResult.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/MinMaxResult.java
@@ -1,10 +1,10 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
 public class MinMaxResult<T> {
     private final T min;
     private final T max;
 
-    MinMaxResult(T min, T max) {
+    MinMaxResult(final T min, final T max) {
         this.min = min;
         this.max = max;
     }
diff --git a/src/main/java/azgracompress/utilities/Stopwatch.java b/src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java
similarity index 90%
rename from src/main/java/azgracompress/utilities/Stopwatch.java
rename to src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java
index c7088b65b64c9b4fcba5b7614384a5cb636ea571..e09e195e85b95e2c21676822f4164853ce219ed1 100644
--- a/src/main/java/azgracompress/utilities/Stopwatch.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/Stopwatch.java
@@ -1,4 +1,4 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
 import org.jetbrains.annotations.NotNull;
 
@@ -13,7 +13,7 @@ public class Stopwatch {
 
     @NotNull
     public static Stopwatch startNew(final String name) {
-        Stopwatch stopwatch = new Stopwatch(name);
+        final Stopwatch stopwatch = new Stopwatch(name);
         stopwatch.start();
         return stopwatch;
     }
@@ -67,15 +67,15 @@ public class Stopwatch {
         double H = 0;
 
         S = MS / 1000.0;
-        double fS = Math.floor(S);
+        final double fS = Math.floor(S);
         MS = (S - fS) * 1000.0;
 
         M = fS / 60.0;
-        double fM = Math.floor(M);
+        final double fM = Math.floor(M);
         S = (M - fM) * 60.0;
 
         H = fM / 60.0;
-        double fH = Math.floor(H);
+        final double fH = Math.floor(H);
         M = (H - fH) * 60.0;
 
         H = fH;
diff --git a/src/main/java/azgracompress/utilities/TypeConverter.java b/src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java
similarity index 89%
rename from src/main/java/azgracompress/utilities/TypeConverter.java
rename to src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java
index 3437885380f43fb8f348fdd269dd58dd5f2ce3cd..daa4b3ffb97c583c9a4feb99931bf66b9da5dd39 100644
--- a/src/main/java/azgracompress/utilities/TypeConverter.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/TypeConverter.java
@@ -1,6 +1,6 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
-import azgracompress.U16;
+import cz.it4i.qcmp.U16;
 
 public class TypeConverter {
 
@@ -10,7 +10,7 @@ public class TypeConverter {
 
     public static int[] unsignedShortBytesToIntArray(final byte[] bytes) {
         assert (bytes.length % 2 == 0);
-        int[] values = new int[bytes.length / 2];
+        final int[] values = new int[bytes.length / 2];
 
         int index = 0;
         for (int i = 0; i < bytes.length; i += 2) {
@@ -21,7 +21,7 @@ public class TypeConverter {
     }
 
     public static int[] shortArrayToIntArray(final short[] src) {
-        int[] result = new int[src.length];
+        final int[] result = new int[src.length];
         for (int i = 0; i < src.length; i++) {
             // Hopefully call to shortToInt gets inlined by JVM.
             result[i] = shortToInt(src[i]);
@@ -30,7 +30,7 @@ public class TypeConverter {
     }
 
     public static short[] intArrayToShortArray(final int[] src) {
-        short[] result = new short[src.length];
+        final short[] result = new short[src.length];
 
         for (int i = 0; i < src.length; i++) {
             if (src[i] < 0 || src[i] > U16.Max) {
@@ -42,7 +42,7 @@ public class TypeConverter {
     }
 
     public static byte[] unsignedShortArrayToByteArray(final int[] data, final boolean littleEndian) {
-        byte[] buffer = new byte[data.length * 2];
+        final byte[] buffer = new byte[data.length * 2];
 
         int j = 0;
         for (final int v : data) {
@@ -58,7 +58,7 @@ public class TypeConverter {
     }
 
     public static byte[] unsignedShortArrayToByteArray(final short[] data, final boolean littleEndian) {
-        byte[] buffer = new byte[data.length * 2];
+        final byte[] buffer = new byte[data.length * 2];
 
         int j = 0;
         for (final short v : data) {
@@ -74,7 +74,7 @@ public class TypeConverter {
     }
 
     public static byte[] intArrayToByteArray(final int[] data, final boolean littleEndian) {
-        byte[] buffer = new byte[data.length * 4];
+        final byte[] buffer = new byte[data.length * 4];
 
         int j = 0;
         for (final int v : data) {
diff --git a/src/main/java/azgracompress/utilities/Utils.java b/src/main/java/cz/it4i/qcmp/utilities/Utils.java
similarity index 88%
rename from src/main/java/azgracompress/utilities/Utils.java
rename to src/main/java/cz/it4i/qcmp/utilities/Utils.java
index 7ec9b1e48a8d804040c7d3db5e501cf3ccc4f343..5c00075fcde891d640af20e10f16dd4587e22f21 100644
--- a/src/main/java/azgracompress/utilities/Utils.java
+++ b/src/main/java/cz/it4i/qcmp/utilities/Utils.java
@@ -1,7 +1,7 @@
-package azgracompress.utilities;
+package cz.it4i.qcmp.utilities;
 
-import azgracompress.U16;
-import azgracompress.data.Range;
+import cz.it4i.qcmp.U16;
+import cz.it4i.qcmp.data.Range;
 
 import java.util.ArrayList;
 
@@ -13,7 +13,7 @@ public class Utils {
     }
 
     public static double calculatePsnr(final double mse, final int signalMax) {
-        double psnr = 10.0 * Math.log10((Math.pow(signalMax, 2) / mse));
+        final double psnr = 10.0 * Math.log10((Math.pow(signalMax, 2) / mse));
         return psnr;
     }
 
@@ -56,22 +56,22 @@ public class Utils {
     public static int[] getDifference(final int[] original, final int[] transformed) {
         assert (original.length == transformed.length) : "Array lengths doesn't match";
 
-        int[] difference = new int[original.length];
+        final int[] difference = new int[original.length];
         for (int i = 0; i < original.length; i++) {
             difference[i] = (original[i] - transformed[i]);
         }
         return difference;
     }
 
-    public static int[] asAbsoluteValues(int[] values) {
-        int[] absValues = new int[values.length];
+    public static int[] asAbsoluteValues(final int[] values) {
+        final int[] absValues = new int[values.length];
         for (int i = 0; i < values.length; i++) {
             absValues[i] = Math.abs(values[i]);
         }
         return absValues;
     }
 
-    public static void applyAbsFunction(int[] values) {
+    public static void applyAbsFunction(final int[] values) {
         for (int i = 0; i < values.length; i++) {
             values[i] = Math.abs(values[i]);
         }
@@ -101,7 +101,7 @@ public class Utils {
      * @return Pixel value frequencies.
      */
     public static double[] calculatePixelFrequencies(final int[] data) {
-        double[] frequencies = new double[U16.Max + 1];
+        final double[] frequencies = new double[U16.Max + 1];
         for (final int pixelValue : data) {
             ++frequencies[pixelValue];
         }
@@ -123,7 +123,7 @@ public class Utils {
 
         double entropy = 0.0;
 
-        for (double pixelProbability : pixelProbabilities) {
+        for (final double pixelProbability : pixelProbabilities) {
             if (pixelProbability > 0.0) {
                 entropy += pixelProbability * log2(pixelProbability);
             }