diff --git a/src/main/java/azgracompress/cli/CliConstants.java b/src/main/java/azgracompress/cli/CliConstants.java
index 29222fded52aaf8cf54c08e0582c22dc0edc6980..62ea677bd33fcca64b08c34892cbe3eb3ab32d19 100644
--- a/src/main/java/azgracompress/cli/CliConstants.java
+++ b/src/main/java/azgracompress/cli/CliConstants.java
@@ -34,8 +34,8 @@ public class CliConstants {
     public static final String WORKER_COUNT_SHORT = "wc";
     public static final String WORKER_COUNT_LONG = "worker-count";
 
-    public static final String CODEBOOK_CACHE_FOLDER_SHORT = "wc";
-    public static final String CODEBOOK_CACHE_FOLDER_LONG = "worker-count";
+    public static final String CODEBOOK_CACHE_FOLDER_SHORT = "cbc";
+    public static final String CODEBOOK_CACHE_FOLDER_LONG = "codebook-cache";
 
     public static final String SCALAR_QUANTIZATION_SHORT = "sq";
     public static final String SCALAR_QUANTIZATION_LONG = "scalar-quantization";
diff --git a/src/main/java/azgracompress/compression/ImageCompressor.java b/src/main/java/azgracompress/compression/ImageCompressor.java
index 20cb982594b32b98606cd17a66e439d28809225e..6f0b45b30f8a4f5c6f5edb34bc09efea9a575576 100644
--- a/src/main/java/azgracompress/compression/ImageCompressor.java
+++ b/src/main/java/azgracompress/compression/ImageCompressor.java
@@ -98,9 +98,13 @@ public class ImageCompressor extends CompressorDecompressorBase {
     private QCMPFileHeader createHeader() {
         QCMPFileHeader header = new QCMPFileHeader();
 
+
         header.setQuantizationType(options.getQuantizationType());
         header.setBitsPerPixel((byte) options.getBitsPerPixel());
-        header.setCodebookPerPlane(!options.hasReferencePlaneIndex());
+        
+        // Codebook per plane is used only if reference plane isn't set nor is the cache folder.
+        final boolean oneCodebook = options.hasReferencePlaneIndex() || options.hasCodebookCacheFolder();
+        header.setCodebookPerPlane(!oneCodebook);
 
         header.setImageSizeX(options.getImageDimension().getX());
         header.setImageSizeY(options.getImageDimension().getY());
diff --git a/src/main/java/azgracompress/compression/SQImageCompressor.java b/src/main/java/azgracompress/compression/SQImageCompressor.java
index f49727da939e0a5b1b8870232d9ae80db0126953..5f8f8392dedb6e467503691ad3947789f26051ee 100644
--- a/src/main/java/azgracompress/compression/SQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/SQImageCompressor.java
@@ -85,6 +85,7 @@ public class SQImageCompressor extends CompressorDecompressorBase implements IIm
             Log("Loading codebook from cache file.");
             quantizer = loadQuantizerFromCache();
             Log("Cached quantizer created.");
+            writeCodebookToOutputStream(quantizer, compressStream);
         } else if (options.hasReferencePlaneIndex()) {
             // TODO(Moravec): Reference plane will be deprecated in favor of 'middle' plane.
             stopwatch.restart();
diff --git a/src/main/java/azgracompress/compression/VQImageCompressor.java b/src/main/java/azgracompress/compression/VQImageCompressor.java
index 52fd5af86b17db93203697621670a7ccdd6d5315..fe3d027130aafc6d51284e3302220e90a0c7036f 100644
--- a/src/main/java/azgracompress/compression/VQImageCompressor.java
+++ b/src/main/java/azgracompress/compression/VQImageCompressor.java
@@ -94,6 +94,7 @@ public class VQImageCompressor extends CompressorDecompressorBase implements IIm
             Log("Loading codebook from cache file.");
             quantizer = loadQuantizerFromCache();
             Log("Cached quantizer created.");
+            writeQuantizerToCompressStream(quantizer, compressStream);
         } else if (options.hasReferencePlaneIndex()) {
             stopwatch.restart();