diff --git a/src/main/java/azgracompress/benchmark/SQBenchmark.java b/src/main/java/azgracompress/benchmark/SQBenchmark.java
index 5f01c98aa234822c1c8c83f7062bf4aca8c82e2d..50a7504adab308a1acd7dd9de56dffb54b52cddc 100644
--- a/src/main/java/azgracompress/benchmark/SQBenchmark.java
+++ b/src/main/java/azgracompress/benchmark/SQBenchmark.java
@@ -58,7 +58,7 @@ public class SQBenchmark extends BenchmarkBase {
 
             final int[] middlePlaneData;
             try {
-                middlePlaneData = planeLoader.loadPlaneU16(middlePlaneIndex).getData();
+                middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
             } catch (IOException e) {
                 e.printStackTrace();
                 System.err.println("Failed to load middle plane data.");
@@ -73,7 +73,7 @@ public class SQBenchmark extends BenchmarkBase {
             // NOTE(Moravec): Actual planeIndex is zero based.
             final int[] planeData;
             try {
-                planeData = planeLoader.loadPlaneU16(planeIndex).getData();
+                planeData = planeLoader.loadPlaneData(planeIndex);
             } catch (IOException e) {
                 e.printStackTrace();
                 System.err.println("Failed to load plane data.");
diff --git a/src/main/java/azgracompress/benchmark/VQBenchmark.java b/src/main/java/azgracompress/benchmark/VQBenchmark.java
index 1be7eb4e6b08c64024737322dfbf36c4321c56db..3161f1a04876d654fc6555a9676cecd4a15a36c9 100644
--- a/src/main/java/azgracompress/benchmark/VQBenchmark.java
+++ b/src/main/java/azgracompress/benchmark/VQBenchmark.java
@@ -82,7 +82,8 @@ public class VQBenchmark extends BenchmarkBase {
             final int middlePlaneIndex = rawImageDims.getZ() / 2;
             final ImageU16 middlePlane;
             try {
-                middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
+
+                middlePlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(middlePlaneIndex));
             } catch (IOException e) {
                 e.printStackTrace();
                 System.err.println("Failed to load middle plane data.");
@@ -91,9 +92,9 @@ public class VQBenchmark extends BenchmarkBase {
 
             final int[][] refPlaneData = getPlaneVectors(middlePlane, qVector);
             LBGVectorQuantizer vqInitializer = new LBGVectorQuantizer(refPlaneData,
-                    codebookSize,
-                    workerCount,
-                    qVector.toV3i());
+                                                                      codebookSize,
+                                                                      workerCount,
+                                                                      qVector.toV3i());
             final LBGResult vqResult = vqInitializer.findOptimalCodebook();
             quantizer = new VectorQuantizer(vqResult.getCodebook());
             System.out.println("Created quantizer from middle plane.");
@@ -104,7 +105,7 @@ public class VQBenchmark extends BenchmarkBase {
 
             final ImageU16 plane;
             try {
-                plane = planeLoader.loadPlaneU16(planeIndex);
+                plane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
             } catch (IOException e) {
                 e.printStackTrace();
                 System.err.println(String.format("Failed to load plane %d data. Skipping plane.", planeIndex));
@@ -116,9 +117,9 @@ public class VQBenchmark extends BenchmarkBase {
 
             if (options.getCodebookType() == CompressionOptions.CodebookType.Individual) {
                 LBGVectorQuantizer vqInitializer = new LBGVectorQuantizer(planeData,
-                        codebookSize,
-                        workerCount,
-                        qVector.toV3i());
+                                                                          codebookSize,
+                                                                          workerCount,
+                                                                          qVector.toV3i());
                 LBGResult vqResult = vqInitializer.findOptimalCodebook();
                 quantizer = new VectorQuantizer(vqResult.getCodebook());
                 System.out.println("Created plane quantizer.");
@@ -127,8 +128,8 @@ public class VQBenchmark 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 int[][] quantizedData = quantizer.quantize(planeData, workerCount);
 
diff --git a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java b/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java
index 5e60b21e1c4e73f0f12ea5ad16de32ad30cf7874..f644cb8a758aa112e1ef4887876099beea744b9f 100644
--- a/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java
+++ b/src/main/java/azgracompress/cli/functions/MeasurePlaneErrorFunction.java
@@ -1,11 +1,9 @@
 package azgracompress.cli.functions;
 
 import azgracompress.cli.CustomFunctionBase;
-import azgracompress.io.FileInputData;
-import azgracompress.io.InputData;
 import azgracompress.cli.ParsedCliOptions;
-import azgracompress.data.ImageU16;
 import azgracompress.data.V3i;
+import azgracompress.io.FileInputData;
 import azgracompress.io.loader.RawDataLoader;
 import azgracompress.utilities.Utils;
 
@@ -58,7 +56,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
                                                 final String folder) {
         System.out.println(
                 String.format("runPlaneDifferenceForAllBits\n\tChannel: %d\n\tMethod: %s\n\tType: %s",
-                        channel, type, folder));
+                              channel, type, folder));
         //        final int channel = 0;
         assert (channel == 0 || channel == 1);
         final String comp_file = channel == 0 ? COMP_FILE_ch0 : COMP_FILE_ch1;
@@ -131,7 +129,7 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
         FileInputData compFileInfo = new FileInputData(compressedFile);
         compFileInfo.setDimension(dims);
 
-        final RawDataLoader refPlaneloader = new RawDataLoader( refFileInfo);
+        final RawDataLoader refPlaneloader = new RawDataLoader(refFileInfo);
         final RawDataLoader compPlaneloader = new RawDataLoader(compFileInfo);
 
         Thread[] workers = new Thread[workerCount];
@@ -143,18 +141,19 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
 
             workers[wId] = new Thread(() -> {
 
-                ImageU16 originalPlane, compressedPlane, differencePlane;
+
+                int[] originalPlaneData, compressedPlaneData;
                 for (int planeIndex = fromIndex; planeIndex < toIndex; planeIndex++) {
                     try {
-                        originalPlane = refPlaneloader.loadPlaneU16(planeIndex);
-                        compressedPlane = compPlaneloader.loadPlaneU16(planeIndex);
+                        originalPlaneData = refPlaneloader.loadPlaneData(planeIndex);
+                        compressedPlaneData = compPlaneloader.loadPlaneData(planeIndex);
                     } catch (IOException e) {
                         e.printStackTrace();
                         break;
                     }
 
 
-                    final int[] diffData = Utils.getDifference(originalPlane.getData(), compressedPlane.getData());
+                    final int[] diffData = Utils.getDifference(originalPlaneData, compressedPlaneData);
                     Utils.applyAbsFunction(diffData);
 
                     final double absDiffSum = Arrays.stream(diffData).mapToDouble(v -> v).sum();
@@ -181,9 +180,9 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
 
             for (final PlaneError planeError : planeErrors) {
                 writer.write(String.format("%d\t%.4f\t%.4f\n",
-                        planeError.getPlaneIndex(),
-                        planeError.getAbsoluteError(),
-                        planeError.getMeanAbsoluteError()));
+                                           planeError.getPlaneIndex(),
+                                           planeError.getAbsoluteError(),
+                                           planeError.getMeanAbsoluteError()));
             }
 
         } catch (IOException e) {
diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java
index 02865f6470ba5466a61e0e3af7b6d5361e4fbc16..9de5d2921aae7ddbb3827169875d812bdab4bc10 100644
--- a/src/main/java/azgracompress/compression/SQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/SQImageCompressor.java
@@ -2,10 +2,9 @@ package azgracompress.compression;
 
 import azgracompress.U16;
 import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.io.InputData;
 import azgracompress.compression.exception.ImageCompressionException;
-import azgracompress.data.ImageU16;
 import azgracompress.huffman.Huffman;
+import azgracompress.io.InputData;
 import azgracompress.io.loader.IPlaneLoader;
 import azgracompress.io.loader.PlaneLoaderFactory;
 import azgracompress.quantization.scalar.LloydMaxU16ScalarQuantization;
@@ -116,17 +115,16 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             writeCodebookToOutputStream(quantizer, compressStream);
         } else if (options.getCodebookType() == CompressionOptions.CodebookType.MiddlePlane) {
             stopwatch.restart();
-            ImageU16 middlePlane = null;
+            int[] middlePlaneData;
             final int middlePlaneIndex = getMiddlePlaneIndex();
             try {
-
-                middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
+                middlePlaneData = planeLoader.loadPlaneData(middlePlaneIndex);
             } catch (IOException ex) {
                 throw new ImageCompressionException("Unable to load middle plane data.", ex);
             }
 
             reportStatusToListeners(String.format("Training scalar quantizer from middle plane %d.", middlePlaneIndex));
-            quantizer = trainScalarQuantizerFromData(middlePlane.getData());
+            quantizer = trainScalarQuantizerFromData(middlePlaneData);
             huffman = createHuffmanCoder(huffmanSymbols, quantizer.getCodebook().getSymbolFrequencies());
 
             stopwatch.stop();
@@ -140,18 +138,16 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
         for (final int planeIndex : planeIndices) {
             stopwatch.restart();
 
-            ImageU16 plane = null;
-
+            int[] planeData;
             try {
-
-                plane = planeLoader.loadPlaneU16(planeIndex);
+                planeData = planeLoader.loadPlaneData(planeIndex);
             } catch (IOException ex) {
                 throw new ImageCompressionException("Unable to load plane data.", ex);
             }
 
             if (!hasGeneralQuantizer) {
                 reportStatusToListeners(String.format("Training scalar quantizer from plane %d.", planeIndex));
-                quantizer = trainScalarQuantizerFromData(plane.getData());
+                quantizer = trainScalarQuantizerFromData(planeData);
                 writeCodebookToOutputStream(quantizer, compressStream);
 
                 huffman = new Huffman(huffmanSymbols, quantizer.getCodebook().getSymbolFrequencies());
@@ -161,7 +157,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             assert (quantizer != null) : "Scalar Quantizer wasn't initialized.";
             assert (huffman != null) : "Huffman wasn't initialized.";
 
-            final int[] indices = quantizer.quantizeIntoIndices(plane.getData(), 1);
+            final int[] indices = quantizer.quantizeIntoIndices(planeData, 1);
 
             planeDataSizes[planeCounter++] = writeHuffmanEncodedIndices(compressStream, huffman, indices);
 
@@ -185,7 +181,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
         if (inputDataInfo.isPlaneIndexSet()) {
             try {
                 reportStatusToListeners("Loading single plane data.");
-                trainData = planeLoader.loadPlaneU16(inputDataInfo.getPlaneIndex()).getData();
+                trainData = planeLoader.loadPlaneData(inputDataInfo.getPlaneIndex());
             } catch (IOException e) {
                 throw new ImageCompressionException("Failed to load plane data.", e);
             }
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java
index 6292c15702129daba0064f278bb67965f285e03e..dd29cb1ba411f894eba7818df97d164f377c6b85 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageCompressor.java
@@ -1,7 +1,6 @@
 package azgracompress.compression;
 
 import azgracompress.cache.QuantizationCacheManager;
-import azgracompress.data.Chunk3D;
 import azgracompress.fileformat.QuantizationType;
 import azgracompress.io.InputData;
 import azgracompress.compression.exception.ImageCompressionException;
@@ -130,8 +129,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
             final int middlePlaneIndex = getMiddlePlaneIndex();
             ImageU16 middlePlane = null;
             try {
-
-                middlePlane = planeLoader.loadPlaneU16(middlePlaneIndex);
+                middlePlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(middlePlaneIndex));
             } catch (IOException ex) {
                 throw new ImageCompressionException("Unable to load reference plane data.", ex);
             }
@@ -155,7 +153,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
 
             ImageU16 plane = null;
             try {
-                plane = planeLoader.loadPlaneU16(planeIndex);
+                plane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
             } catch (IOException ex) {
                 throw new ImageCompressionException("Unable to load plane data.", ex);
             }
@@ -193,7 +191,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
 
     private int[][] loadPlaneQuantizationVectors(final IPlaneLoader planeLoader,
                                                  final int planeIndex) throws IOException {
-        ImageU16 refPlane = planeLoader.loadPlaneU16(planeIndex);
+        ImageU16 refPlane = new ImageU16(options.getInputDataInfo().getDimensions().toV2i(), planeLoader.loadPlaneData(planeIndex));
         return refPlane.toQuantizationVectors(options.getQuantizationVector().toV2i());
     }
 
@@ -272,15 +270,15 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
 
 
     public long[] compressVoxels(DataOutputStream compressStream) throws ImageCompressionException {
-        int[][] voxels;
-        try {
-            IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
-            final int[] data = loader.loadAllPlanesU16Data();
-            Chunk3D bigVoxel = new Chunk3D(options.getInputDataInfo().getDimensions(), data);
-            voxels = bigVoxel.divideInto3DVectors(options.getQuantizationVector());
-        } catch (Exception e) {
-            throw new ImageCompressionException("Unable to create data loader or load image data.", e);
-        }
+        //        int[][] voxels;
+        //        try {
+        //            IPlaneLoader loader = PlaneLoaderFactory.getPlaneLoaderForInputFile(options.getInputDataInfo());
+        //            final int[] data = loader.loadAllPlanesU16Data();
+        //            Chunk3D bigVoxel = new Chunk3D(options.getInputDataInfo().getDimensions(), data);
+        //            voxels = bigVoxel.divideInto3DVectors(options.getQuantizationVector());
+        //        } catch (Exception e) {
+        //            throw new ImageCompressionException("Unable to create data loader or load image data.", e);
+        //        }
         return null;
 
     }