diff --git a/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
index c36aef2a4426a1f5d3e23a6dc88b210a96c992d0..960de9438081b5a39f4146a30ed11639a082bf67 100644
--- a/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
+++ b/src/main/java/cz/it4i/qcmp/cli/CompressionOptionsCLIParser.java
@@ -3,6 +3,7 @@ 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.HyperStackDimensions;
 import cz.it4i.qcmp.data.Range;
 import cz.it4i.qcmp.data.V2i;
 import cz.it4i.qcmp.data.V3i;
@@ -178,18 +179,17 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             return;
         }
 
-        final FileInputData fileInputData = new FileInputData(inputFileArguments[0]);
-        setInputDataInfo(fileInputData);
 
         // Decompress and Inspect methods doesn't require additional file information.
         if ((method == ProgramMethod.Decompress) || (method == ProgramMethod.InspectFile)) {
+            setInputDataInfo(new FileInputData(inputFileArguments[0], null));
             return;
         }
 
         // Check if input file exists.
-        if (!new File(fileInputData.getFilePath()).exists()) {
+        if (!new File(inputFileArguments[0]).exists()) {
             parseErrorOccurred = true;
-            errorBuilder.append("Input file doesn't exist. Provided path: '").append(fileInputData.getFilePath()).append("'\n");
+            errorBuilder.append("Input file doesn't exist. Provided path: '").append(inputFileArguments[0]).append("'\n");
             return;
         }
 
@@ -215,6 +215,7 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             return;
         }
 
+
         final int imageCount = reader.getImageCount();
         if (imageCount != 1) {
             parseErrorOccurred = true;
@@ -251,11 +252,9 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             return;
         }
 
-        getInputDataInfo().setDimension(new V3i(
-                (int) planeWidth,
-                (int) planeHeight,
-                (int) planeCount
-        ));
+        setInputDataInfo(new FileInputData(inputFileArguments[0], new HyperStackDimensions((int) planeWidth,
+                                                                                           (int) planeHeight,
+                                                                                           (int) planeCount)));
 
         if (inputFileArguments.length > 1) {
             parseInputFilePlaneOptions(errorBuilder, inputFileArguments, 1);
@@ -272,10 +271,10 @@ public class CompressionOptionsCLIParser extends CompressionOptions implements C
             return;
         }
         getInputDataInfo().setDataLoaderType(InputData.DataLoaderType.RawDataLoader);
-        final Optional<V3i> parsedImageDims = ParseUtils.tryParseV3i(inputFileArguments[1], 'x');
 
-        if (parsedImageDims.isPresent()) {
-            getInputDataInfo().setDimension(parsedImageDims.get());
+        final Optional<HyperStackDimensions> parsedDatasetDims = ParseUtils.tryParseHyperStackDimensions(inputFileArguments[1], 'x');
+        if (parsedDatasetDims.isPresent()) {
+            setInputDataInfo(new FileInputData(inputFileArguments[0], parsedDatasetDims.get()));
         } else {
             parseErrorOccurred = true;
             errorBuilder.append("Failed to parse image dimensions of format DxDxD. Got: ")