diff --git a/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
index ff06d5d2b6241ce9630762a206894972e610ef8a..363dca6ec63b4cf77878358edb5e1f4335072106 100644
--- a/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/scalar/SQCodebook.java
@@ -1,33 +1,32 @@
 package cz.it4i.qcmp.quantization.scalar;
 
 
+import cz.it4i.qcmp.huffman.HuffmanNode;
+import cz.it4i.qcmp.quantization.Codebook;
+
 /**
  * Codebook for scalar quantizer.
  */
-public class SQCodebook {
+public class SQCodebook extends Codebook {
     /**
      * Quantization values.
      */
     final int[] centroids;
 
-    /**
-     * Absolute frequencies of quantization values.
-     */
-    final long[] indexFrequencies;
-
     /**
      * Size of the codebook.
      */
     final int codebookSize;
 
     /**
-     * @param centroids        Quantization values.
-     * @param indexFrequencies Absolute frequencies of quantization values.
+     * Create SQ codebook from quantization values and huffman coder.
+     *
+     * @param centroids   Quantization values.
+     * @param huffmanRoot Root of the huffman tree.
      */
-    public SQCodebook(final int[] centroids, final long[] indexFrequencies) {
-        assert (centroids.length == indexFrequencies.length);
+    public SQCodebook(final int[] centroids, final HuffmanNode huffmanRoot) {
+        super(huffmanRoot);
         this.centroids = centroids;
-        this.indexFrequencies = indexFrequencies;
         this.codebookSize = this.centroids.length;
     }
 
@@ -40,15 +39,6 @@ public class SQCodebook {
         return centroids;
     }
 
-    /**
-     * Get frequencies of codebook symbols at indices.
-     *
-     * @return Frequencies of symbols.
-     */
-    public long[] getSymbolFrequencies() {
-        return indexFrequencies;
-    }
-
     /**
      * Get codebook size.
      *
diff --git a/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
index a000184b28f18c7ef0008afd3b20404e213be1f1..a47f71c411b6e0a2f6c8148e60ce75f6c177976b 100644
--- a/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
+++ b/src/main/java/cz/it4i/qcmp/quantization/vector/VQCodebook.java
@@ -1,20 +1,18 @@
 package cz.it4i.qcmp.quantization.vector;
 
 import cz.it4i.qcmp.data.V3i;
+import cz.it4i.qcmp.huffman.HuffmanNode;
+import cz.it4i.qcmp.quantization.Codebook;
 
 /**
  * Codebook for vector quantizer.
  */
-public class VQCodebook {
+public class VQCodebook extends Codebook {
     /**
      * Quantization vectors.
      */
     private final int[][] vectors;
 
-    /**
-     * Absolute frequencies of quantization vectors.
-     */
-    private final long[] vectorFrequencies;
 
     /**
      * Size of the codebook.
@@ -26,11 +24,16 @@ public class VQCodebook {
      */
     private final V3i vectorDims;
 
-    public VQCodebook(final V3i vectorDims, final int[][] vectors, final long[] vectorFrequencies) {
-        //assert (vectors.length == vectorFrequencies.length);
+    /**
+     * Create vector quantization codebook from quantization vectors and huffman coder.
+     *
+     * @param vectorDims  Quantization vector dimensions.
+     * @param vectors     Quantization vectors.
+     * @param huffmanRoot Root of the huffman tree.
+     */
+    public VQCodebook(final V3i vectorDims, final int[][] vectors, final HuffmanNode huffmanRoot) {
         this.vectorDims = vectorDims;
         this.vectors = vectors;
-        this.vectorFrequencies = vectorFrequencies;
         this.codebookSize = vectors.length;
     }
 
@@ -43,15 +46,6 @@ public class VQCodebook {
         return vectors;
     }
 
-    /**
-     * Get frequencies of codebook vectors at indices.
-     *
-     * @return Frequencies of vectors.
-     */
-    public long[] getVectorFrequencies() {
-        return vectorFrequencies;
-    }
-
     /**
      * Get codebook size.
      *