diff --git a/av1/common/generic_code.h b/av1/common/generic_code.h
index c5b3915..2c2ac7f 100644
--- a/av1/common/generic_code.h
+++ b/av1/common/generic_code.h
@@ -69,7 +69,7 @@
 int od_decode_cdf_adapt_(od_ec_dec *ec, uint16_t *cdf, int n,
  int increment OD_ACC_STR);
 
-void generic_encode(od_ec_enc *enc, generic_encoder *model, int x, int max,
+void generic_encode(aom_writer *w, generic_encoder *model, int x, int max,
  int *ex_q16, int integration);
 double generic_encode_cost(generic_encoder *model, int x, int max,
  int *ex_q16);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 305a9d7..3fbdd8e 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2149,7 +2149,7 @@
           }
           // Encode residue of DC coeff, if exist.
           if (!has_dc_skip || (pvq->ac_dc_coded & 1)) {  // DC coded?
-            generic_encode(&w->ec, &adapt->model_dc[plane],
+            generic_encode(w, &adapt->model_dc[plane],
                            abs(pvq->dq_dc_residue) - has_dc_skip, -1,
                            &adapt->ex_dc[plane][pvq->bs][0], 2);
           }
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index a76443a..6573af9 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -1186,13 +1186,9 @@
 
   // Encode residue of DC coeff, if required.
   if (!has_dc_skip || out_int32[0]) {
-#if CONFIG_DAALA_EC
-    generic_encode(&daala_enc->w.ec, &daala_enc->state.adapt.model_dc[plane],
+    generic_encode(&daala_enc->w, &daala_enc->state.adapt.model_dc[plane],
                    abs(out_int32[0]) - has_dc_skip, -1,
                    &daala_enc->state.adapt.ex_dc[plane][tx_size][0], 2);
-#else
-#error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
   }
   if (out_int32[0]) {
     aom_write_bit(&daala_enc->w, out_int32[0] < 0);
diff --git a/av1/encoder/generic_encoder.c b/av1/encoder/generic_encoder.c
index 64b0734..b67e042 100644
--- a/av1/encoder/generic_encoder.c
+++ b/av1/encoder/generic_encoder.c
@@ -77,7 +77,7 @@
  * distribution is one-sided (zero and up), has a single mode, and decays
  * exponentially past the model.
  *
- * @param [in,out] enc   range encoder
+ * @param [in,out] w     multi-symbol entropy encoder
  * @param [in,out] model generic probability model
  * @param [in]     x     variable being encoded
  * @param [in]     max   largest value possible
@@ -85,7 +85,7 @@
  * @param [in]     integration integration period of ExQ16 (leaky average over
  * 1<<integration samples)
  */
-void generic_encode(od_ec_enc *enc, generic_encoder *model, int x, int max,
+void generic_encode(aom_writer *w, generic_encoder *model, int x, int max,
  int *ex_q16, int integration) {
   int lg_q1;
   int shift;
@@ -107,9 +107,9 @@
   xs = (x + (1 << shift >> 1)) >> shift;
   ms = (max + (1 << shift >> 1)) >> shift;
   OD_ASSERT(max == -1 || xs <= ms);
-  if (max == -1) od_ec_encode_cdf_unscaled(enc, OD_MINI(15, xs), cdf, 16);
+  if (max == -1) aom_write_symbol_unscaled(w, OD_MINI(15, xs), cdf, 16);
   else {
-    od_ec_encode_cdf_unscaled(enc, OD_MINI(15, xs), cdf, OD_MINI(ms + 1, 16));
+    aom_write_symbol_unscaled(w, OD_MINI(15, xs), cdf, OD_MINI(ms + 1, 16));
   }
   if (xs >= 15) {
     int e;
@@ -122,7 +122,12 @@
     e = ((2**ex_q16 >> 8) + (1 << shift >> 1)) >> shift;
     decay = OD_MAXI(2, OD_MINI(254, 256*e/(e + 256)));
     /* Encode the tail of the distribution assuming exponential decay. */
-    od_laplace_encode_special(enc, xs - 15, decay, (max == -1) ? -1 : ms - 15);
+#if CONFIG_DAALA_EC
+    od_laplace_encode_special(&w->ec, xs - 15, decay,
+                              (max == -1) ? -1 : ms - 15);
+#else
+# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
+#endif
   }
   if (shift != 0) {
     int special;
@@ -130,8 +135,12 @@
        for xs=0. */
     special = xs == 0;
     if (shift - special > 0) {
-      od_ec_enc_bits(enc, x - (xs << shift) + (!special << (shift - 1)),
+#if CONFIG_DAALA_EC
+      od_ec_enc_bits(&w->ec, x - (xs << shift) + (!special << (shift - 1)),
        shift - special);
+#else
+# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
+#endif
     }
   }
   generic_model_update(model, ex_q16, x, xs, id, integration);
diff --git a/av1/encoder/pvq_encoder.c b/av1/encoder/pvq_encoder.c
index 3028d41..7ac34ba 100644
--- a/av1/encoder/pvq_encoder.c
+++ b/av1/encoder/pvq_encoder.c
@@ -683,22 +683,14 @@
   if (qg > 0) {
     int tmp;
     tmp = *exg;
-#if CONFIG_DAALA_EC
-    generic_encode(&w->ec, &model[!noref], qg - 1, -1, &tmp, 2);
-#else
-# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
+    generic_encode(w, &model[!noref], qg - 1, -1, &tmp, 2);
     OD_IIR_DIADIC(*exg, qg << 16, 2);
   }
   if (theta > 1 && (nodesync || max_theta > 3)) {
     int tmp;
     tmp = *ext;
-#if CONFIG_DAALA_EC
-    generic_encode(&w->ec, &model[2], theta - 2, nodesync ? -1 : max_theta - 3,
+    generic_encode(w, &model[2], theta - 2, nodesync ? -1 : max_theta - 3,
      &tmp, 2);
-#else
-# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
-#endif
     OD_IIR_DIADIC(*ext, theta << 16, 2);
   }
 #if CONFIG_DAALA_EC
@@ -914,9 +906,9 @@
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
 #endif
       od_encode_checkpoint(enc, &dc_buf);
-#if CONFIG_DAALA_EC
-      generic_encode(&enc->w.ec, &enc->state.adapt.model_dc[pli],
+      generic_encode(&enc->w, &enc->state.adapt.model_dc[pli],
        n - 1, -1, &enc->state.adapt.ex_dc[pli][bs][0], 2);
+#if CONFIG_DAALA_EC
       tell2 = od_ec_enc_tell_frac(&enc->w.ec) - tell2;
 #else
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
@@ -1041,9 +1033,9 @@
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
 #endif
         od_encode_checkpoint(enc, &dc_buf);
-#if CONFIG_DAALA_EC
-        generic_encode(&enc->w.ec, &enc->state.adapt.model_dc[pli],
+        generic_encode(&enc->w, &enc->state.adapt.model_dc[pli],
          n - 1, -1, &enc->state.adapt.ex_dc[pli][bs][0], 2);
+#if CONFIG_DAALA_EC
         tell2 = od_ec_enc_tell_frac(&enc->w.ec) - tell2;
 #else
 #error "CONFIG_PVQ currently requires CONFIG_DAALA_EC."
