diff --git a/src/main/java/azgracompress/cli/ParsedCliOptions.java b/src/main/java/azgracompress/cli/ParsedCliOptions.java
index c77f3466b0bf0b58a6b01d5412552369d74e5eeb..28a3bdeebfbba1f43f621fc8649a75c32c4f830a 100644
--- a/src/main/java/azgracompress/cli/ParsedCliOptions.java
+++ b/src/main/java/azgracompress/cli/ParsedCliOptions.java
@@ -19,11 +19,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
      */
     private ProgramMethod method;
 
-    /**
-     * Flag whether the CLI app should be verbose while running.
-     */
-    private boolean verbose;
-
     /**
      * Flag whether parse error occurred.
      */
@@ -107,7 +102,7 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
         final String[] fileInfo = cmd.getArgs();
         parseInputFilePart(errorBuilder, fileInfo);
 
-        verbose = cmd.hasOption(CliConstants.VERBOSE_LONG);
+        setVerbose(cmd.hasOption(CliConstants.VERBOSE_LONG));
 
         if (cmd.hasOption(CliConstants.WORKER_COUNT_LONG)) {
             final String wcString = cmd.getOptionValue(CliConstants.WORKER_COUNT_LONG);
@@ -373,10 +368,6 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
         return method;
     }
 
-    public boolean isVerbose() {
-        return verbose;
-    }
-
     public boolean parseError() {
         return parseErrorOccurred;
     }
@@ -456,28 +447,12 @@ public class ParsedCliOptions extends CompressionOptions implements Cloneable {
             sb.append("ToPlaneIndex: ").append(getPlaneRange().getInclusiveTo()).append('\n');
         }
 
-        sb.append("Verbose: ").append(verbose).append('\n');
+        sb.append("Verbose: ").append(isVerbose()).append('\n');
         sb.append("ThreadWorkerCount: ").append(getWorkerCount()).append('\n');
 
         return sb.toString();
     }
 
-    /**
-     * Get number of planes to be compressed.
-     *
-     * @return Number of planes for compression.
-     */
-    public int getNumberOfPlanes() {
-        if (getPlaneIndex() != null) {
-            return 1;
-        } else if (getPlaneRange() != null) {
-            final Interval<Integer> planeRange = getPlaneRange();
-            return ((planeRange.getInclusiveTo() + 1) - planeRange.getFrom());
-        } else {
-            return getImageDimension().getZ();
-        }
-    }
-
     @Override
     public Object clone() throws CloneNotSupportedException {
         return super.clone();
diff --git a/src/main/java/azgracompress/compression/CompressionOptions.java b/src/main/java/azgracompress/compression/CompressionOptions.java
index 2f94b243cb01c120f4af99d31d40dada8d78213d..ac772956d1c576ac70877c252ce6a5e9d716f6f3 100644
--- a/src/main/java/azgracompress/compression/CompressionOptions.java
+++ b/src/main/java/azgracompress/compression/CompressionOptions.java
@@ -64,8 +64,32 @@ public class CompressionOptions {
      */
     private int workerCount = 1;
 
-    // NOTE(Moravec): Getters and setters for the private fields.
+    /**
+     * Flag whether the CLI app should be verbose while running.
+     */
+    private boolean verbose;
+
+    public boolean isPlaneIndexSet() {
+        return (planeIndex != null);
+    }
+
+    public boolean isPlaneRangeSet() {
+        return (planeRange != null);
+    }
+
+    public boolean hasCodebookCacheFolder() {
+        return codebookCacheFolder != null;
+    }
 
+    protected void setVerbose(boolean verbose) {
+        this.verbose = verbose;
+    }
+
+    // NOTE(Moravec): Generated getters and setters for the private fields.
+
+    public boolean isVerbose() {
+        return verbose;
+    }
 
     public String getInputFilePath() {
         return inputFilePath;
@@ -135,14 +159,6 @@ public class CompressionOptions {
         return planeIndex;
     }
 
-    public boolean isPlaneIndexSet() {
-        return (planeIndex != null);
-    }
-
-    public boolean isPlaneRangeSet() {
-        return (planeRange != null);
-    }
-
     public void setPlaneIndex(Integer planeIndex) {
         this.planeIndex = planeIndex;
     }
diff --git a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java
index 8ab8f5a759bde145550f9ade60ad62b46fa8faa2..896222dd24305a7b36f70e7baa27df5756d99bb1 100644
--- a/src/main/java/azgracompress/compression/CompressorDecompressorBase.java
+++ b/src/main/java/azgracompress/compression/CompressorDecompressorBase.java
@@ -11,10 +11,10 @@ public abstract class CompressorDecompressorBase {
     public static final int LONG_BYTES = 8;
     public static final String EXTENSION = ".QCMP";
 
-    protected final ParsedCliOptions options;
+    protected final CompressionOptions options;
     private final int codebookSize;
 
-    public CompressorDecompressorBase(ParsedCliOptions options) {
+    public CompressorDecompressorBase(CompressionOptions options) {
         this.options = options;
         this.codebookSize = (int) Math.pow(2, this.options.getBitsPerCodebookIndex());
     }
diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java
index 90db3d2c14d180bbb383a0e0d1c7c5242c0047e6..82676671154df6f810a8313c721c01c8e710b9d3 100644
--- a/src/main/java/azgracompress/compression/ImageCompressor.java
+++ b/src/main/java/azgracompress/compression/ImageCompressor.java
@@ -113,6 +113,22 @@ public class ImageCompressor extends CompressorDecompressorBase {
         }
     }
 
+    /**
+     * Get number of planes to be compressed.
+     *
+     * @return Number of planes for compression.
+     */
+    private int getNumberOfPlanes() {
+        if (options.isPlaneIndexSet()) {
+            return 1;
+        } else if (options.isPlaneRangeSet()) {
+            final Interval<Integer> planeRange = options.getPlaneRange();
+            return ((planeRange.getInclusiveTo() + 1) - planeRange.getFrom());
+        } else {
+            return options.getImageDimension().getZ();
+        }
+    }
+
     /**
      * Create QCMPFile header for compressed file.
      *
@@ -131,7 +147,7 @@ public class ImageCompressor extends CompressorDecompressorBase {
 
         header.setImageSizeX(options.getImageDimension().getX());
         header.setImageSizeY(options.getImageDimension().getY());
-        header.setImageSizeZ(options.getNumberOfPlanes());
+        header.setImageSizeZ(getNumberOfPlanes());
 
         header.setVectorDimension(options.getVectorDimension());
 
diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java
index 09efdeacdb381e7ff84a5a8b9d25ca2d10fb6d24..a73f3a9542431905076deb24bd918c8b84df77fe 100644
--- a/src/main/java/azgracompress/compression/SQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/SQImageCompressor.java
@@ -17,7 +17,7 @@ import java.io.IOException;
 
 public class SQImageCompressor extends CompressorDecompressorBase implements IImageCompressor {
 
-    public SQImageCompressor(ParsedCliOptions options) {
+    public SQImageCompressor(CompressionOptions options) {
         super(options);
     }
 
diff --git a/src/main/java/azgracompress/compression/SQImageDecompressor.java b/src/main/java/azgracompress/compression/SQImageDecompressor.java
index 1009794cc160e249ec7d39ed90761fdbe0cd731d..72008072a012d3405ea07fcd03d88c783758ba8b 100644
--- a/src/main/java/azgracompress/compression/SQImageDecompressor.java
+++ b/src/main/java/azgracompress/compression/SQImageDecompressor.java
@@ -15,7 +15,7 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 
 public class SQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor {
-    public SQImageDecompressor(ParsedCliOptions options) {
+    public SQImageDecompressor(CompressionOptions options) {
         super(options);
     }
 
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java
index 3b6eb761a384791536559f54c48a4b02be37fbf4..7365bf2eecb11935696f3e392047d74385de3483 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageCompressor.java
@@ -15,7 +15,7 @@ import java.io.IOException;
 
 public class VQImageCompressor extends CompressorDecompressorBase implements IImageCompressor {
 
-    public VQImageCompressor(ParsedCliOptions options) {
+    public VQImageCompressor(CompressionOptions options) {
         super(options);
     }
 
diff --git a/src/main/java/azgracompress/compression/VQImageDecompressor.java b/src/main/java/azgracompress/compression/VQImageDecompressor.java
index e86a980249f505cc502651725c444a892be83850..1f2894b961907d9b421e846aef8f4c1f6970320c 100644
--- a/src/main/java/azgracompress/compression/VQImageDecompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageDecompressor.java
@@ -19,7 +19,7 @@ import java.io.IOException;
 // TODO(Moravec): Handle huffman decoding.
 
 public class VQImageDecompressor extends CompressorDecompressorBase implements IImageDecompressor {
-    public VQImageDecompressor(ParsedCliOptions options) {
+    public VQImageDecompressor(CompressionOptions options) {
         super(options);
     }