diff --git a/src/main/java/azgracompress/cli/ParsedCliOptions.java b/src/main/java/azgracompress/cli/ParsedCliOptions.java
index d20f44a1653df7874c14b5be8422d2809be1666f..db87c5a66b5e012d798201df98b5ab81552d9cde 100644
--- a/src/main/java/azgracompress/cli/ParsedCliOptions.java
+++ b/src/main/java/azgracompress/cli/ParsedCliOptions.java
@@ -189,7 +189,7 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
         // Check if input file exists.
         if (!new File(fileInputData.getFilePath()).exists()) {
             parseErrorOccurred = true;
-            errorBuilder.append("Input file doesn't exist.\n");
+            errorBuilder.append("Input file doesn't exist. Provided path: '").append(fileInputData.getFilePath()).append("'\n");
             return;
         }
 
@@ -273,13 +273,16 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
         getInputDataInfo().setDataLoaderType(InputData.DataLoaderType.RawDataLoader);
         final Optional<V3i> parsedImageDims = ParseUtils.tryParseV3i(inputFileArguments[1], 'x');
 
-        if (!parsedImageDims.isPresent()) {
+        if (parsedImageDims.isPresent()) {
+            getInputDataInfo().setDimension(parsedImageDims.get());
+        } else {
             parseErrorOccurred = true;
             errorBuilder.append("Failed to parse image dimensions of format DxDxD. Got: ")
                     .append(inputFileArguments[1])
                     .append('\n');
             return;
         }
+
         // User specified plane index or plane range.
         if (inputFileArguments.length > 2) {
             parseInputFilePlaneOptions(errorBuilder, inputFileArguments, 2);
@@ -531,4 +534,9 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
     }
+
+    @Override
+    public boolean isConsoleApplication() {
+        return true;
+    }
 }
diff --git a/src/main/java/azgracompress/compression/CompressionOptions.java b/src/main/java/azgracompress/compression/CompressionOptions.java
index 0d7040de5e8eced04b5760a14b0adb7706fdae0e..66d805a0b1b1af053453c78d595faf749af506d1 100644
--- a/src/main/java/azgracompress/compression/CompressionOptions.java
+++ b/src/main/java/azgracompress/compression/CompressionOptions.java
@@ -139,4 +139,6 @@ public class CompressionOptions {
     public void setCodebookType(CodebookType codebookType) {
         this.codebookType = codebookType;
     }
+
+    public boolean isConsoleApplication() {return false;}
 }
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java
index 777236c62124b0165b2b4988b15a4fb59559b516..cbbd70245a7ad6b4e3a9bb348faa4302688ab238 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageCompressor.java
@@ -272,9 +272,14 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
             final int[] indices = quantizer.quantizeIntoIndices(voxelData, options.getWorkerCount());
             voxelLayersSizes[voxelLayerIndex] = writeHuffmanEncodedIndices(compressStream, huffman, indices);
             stopwatch.stop();
-            reportProgressToListeners(voxelLayerIndex, voxelLayerCount,
-                                      "%d/%d Finished voxel layer %s compression pass in %s",
-                                      voxelLayerIndex, voxelLayerCount, voxelLayerRange.toString(), stopwatch.getElapsedTimeString());
+            if (options.isConsoleApplication()) {
+                reportStatusToListeners("%d/%d Finished voxel layer %s compression pass in %s",
+                                        voxelLayerIndex, voxelLayerCount, voxelLayerRange.toString(), stopwatch.getElapsedTimeString());
+            } else {
+                reportProgressToListeners(voxelLayerIndex, voxelLayerCount,
+                                          "%d/%d Finished voxel layer %s compression pass in %s",
+                                          voxelLayerIndex, voxelLayerCount, voxelLayerRange.toString(), stopwatch.getElapsedTimeString());
+            }
         }
 
         return voxelLayersSizes;
diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/azgracompress/compression/VQImageDecompressor.java
index 220b91b5b4939631c8b5f0a6cd3f9c91f466a476..ec0d3795680948aed3e74a519ddafe143e6f4fe6 100644
--- a/src/main/java/azgracompress/compression/VQImageDecompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageDecompressor.java
@@ -136,8 +136,8 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
 
             final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex];
             try (InBitStream inBitStream = new InBitStream(compressedStream,
-                    header.getBitsPerCodebookIndex(),
-                    planeDataSize)) {
+                                                           header.getBitsPerCodebookIndex(),
+                                                           planeDataSize)) {
                 inBitStream.readToBuffer();
                 inBitStream.setAllowReadFromUnderlyingStream(false);
 
@@ -145,13 +145,13 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
                 for (int vecIndex = 0; vecIndex < planeVectorCount; vecIndex++) {
                     final int huffmanSymbol = decodeHuffmanSymbol(huffman, inBitStream);
                     System.arraycopy(codebook.getVectors()[huffmanSymbol].getVector(),
-                            0, decompressedVectors[vecIndex], 0, vectorSize);
+                                     0, decompressedVectors[vecIndex], 0, vectorSize);
                 }
 
 
                 final ImageU16 decompressedPlane = reconstructImageFromQuantizedVectors(decompressedVectors,
-                        qVector,
-                        header.getImageDims());
+                                                                                        qVector,
+                                                                                        header.getImageDims());
                 decompressedPlaneData =
                         TypeConverter.unsignedShortArrayToByteArray(decompressedPlane.getData(), false);
             } catch (Exception ex) {
@@ -167,7 +167,7 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
 
             stopwatch.stop();
             reportProgressToListeners(planeIndex, planeCountForDecompression,
-                    "Decompressed plane %d in %s", planeIndex, stopwatch.getElapsedTimeString());
+                                      "Decompressed plane %d in %s", planeIndex, stopwatch.getElapsedTimeString());
         }
     }
 
@@ -207,8 +207,8 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
 
             final int planeDataSize = (int) header.getPlaneDataSizes()[planeIndex];
             try (InBitStream inBitStream = new InBitStream(compressedStream,
-                    header.getBitsPerCodebookIndex(),
-                    planeDataSize)) {
+                                                           header.getBitsPerCodebookIndex(),
+                                                           planeDataSize)) {
                 inBitStream.readToBuffer();
                 inBitStream.setAllowReadFromUnderlyingStream(false);
 
@@ -221,20 +221,22 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
                         currentHuffmanNode = currentHuffmanNode.traverse(bit);
                     }
                     System.arraycopy(codebook.getVectors()[currentHuffmanNode.getSymbol()].getVector(),
-                            0, decompressedVectors[vecIndex], 0, vectorSize);
+                                     0, decompressedVectors[vecIndex], 0, vectorSize);
                 }
 
 
                 final ImageU16 decompressedPlane = reconstructImageFromQuantizedVectors(decompressedVectors,
-                        qVector,
-                        header.getImageDims());
+                                                                                        qVector,
+                                                                                        header.getImageDims());
 
                 buffer[planeIndex] = TypeConverter.intArrayToShortArray(decompressedPlane.getData());
             } catch (Exception ex) {
-                throw new ImageDecompressionException("VQImageDecompressor::decompressToBuffer() - Unable to read indices from InBitStream.", ex);
+                throw new ImageDecompressionException("VQImageDecompressor::decompressToBuffer() - Unable to read indices from " +
+                                                              "InBitStream.",
+                                                      ex);
             }
             reportProgressToListeners(planeIndex, planeCountForDecompression,
-                    "Decompressed plane %d.", planeIndex);
+                                      "Decompressed plane %d.", planeIndex);
         }
     }
 
@@ -283,13 +285,14 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
                 for (int voxelIndex = 0; voxelIndex < voxelLayerVoxelCount; voxelIndex++) {
                     final int huffmanSymbol = decodeHuffmanSymbol(huffman, inBitStream);
                     System.arraycopy(codebook.getVectors()[huffmanSymbol].getVector(),
-                            0, decompressedVoxels[voxelIndex], 0, vectorSize);
+                                     0, decompressedVoxels[voxelIndex], 0, vectorSize);
                 }
 
                 final Voxel currentVoxel = new Voxel(currentVoxelLayerDims);
                 currentVoxelLayer = currentVoxel.reconstructFromVoxelsToDataset(voxelDims, decompressedVoxels);
             } catch (Exception e) {
-                throw new ImageDecompressionException("VQImageDecompressor::decompressVoxels() - Unable to read indices from InBitStream.", e);
+                throw new ImageDecompressionException("VQImageDecompressor::decompressVoxels() - Unable to read indices from InBitStream.",
+                                                      e);
             }
 
             for (int layer = 0; layer < currentVoxelLayerDims.getZ(); layer++) {
@@ -301,9 +304,14 @@ public class VQImageDecompressor extends CompressorDecompressorBase implements I
             }
 
             stopwatch.stop();
-            reportProgressToListeners(voxelLayerIndex, voxelLayerCount,
-                    "Decompressed voxel layer %d/%d in %s",
-                    voxelLayerIndex, voxelLayerCount, stopwatch.getElapsedTimeString());
+            if (options.isConsoleApplication()) {
+                reportStatusToListeners("Decompressed voxel layer %d/%d in %s",
+                                        voxelLayerIndex, voxelLayerCount, stopwatch.getElapsedTimeString());
+            } else {
+                reportProgressToListeners(voxelLayerIndex, voxelLayerCount,
+                                          "Decompressed voxel layer %d/%d in %s",
+                                          voxelLayerIndex, voxelLayerCount, stopwatch.getElapsedTimeString());
+            }
         }
     }