diff --git a/aig.cabal b/aig.cabal
--- a/aig.cabal
+++ b/aig.cabal
@@ -1,5 +1,5 @@
 Name:               aig
-Version:            0.2.5
+Version:            0.2.6
 License:            BSD3
 License-file:       LICENSE
 Author:             Galois Inc.
@@ -32,9 +32,9 @@
     Data.AIG.Trace
 
   default-Language: Haskell2010
-  ghc-options:      -Wall -fno-ignore-asserts -O2
+  ghc-options:      -Wall -fno-ignore-asserts
   build-depends:
-    base == 4.*,
+    base >= 4 && < 4.12,
     base-compat >= 0.6.0,
     mtl,
     vector,
diff --git a/src/Data/AIG/Interface.hs b/src/Data/AIG/Interface.hs
--- a/src/Data/AIG/Interface.hs
+++ b/src/Data/AIG/Interface.hs
@@ -196,6 +196,9 @@
   -- | Write network out to AIGER file.
   writeAiger :: FilePath -> Network l g -> IO ()
 
+  -- | Write network out to AIGER file with some inputs designated as latches.
+  writeAigerWithLatches :: FilePath -> Network l g -> Int -> IO ()
+
   -- | Write network out to DIMACS CNF file.
   -- Returns vector mapping combinational inputs to CNF Variable
   -- numbers.
@@ -464,6 +467,9 @@
   getInput _g i = return . BasicLit . LitTree . Input $ i
 
   writeAiger _fp _ntk =
+     fail "Cannot write AIGER files from the BasicGraph implementation"
+
+  writeAigerWithLatches _fp _ntk _n =
      fail "Cannot write AIGER files from the BasicGraph implementation"
 
   writeCNF _g _l _fp =
diff --git a/src/Data/AIG/Trace.hs b/src/Data/AIG/Trace.hs
--- a/src/Data/AIG/Trace.hs
+++ b/src/Data/AIG/Trace.hs
@@ -170,6 +170,9 @@
   writeAiger fp0 (Network g outs0) =
        (traceOp g "writeAiger" $ \fp outs -> writeAiger fp (Network (tGraph g) (map unTraceLit outs))) fp0 outs0
 
+  writeAigerWithLatches fp0 (Network g outs0) nl0 =
+       (traceOp g "writeAigerWithLatches" $ \fp outs nl -> writeAigerWithLatches fp (Network (tGraph g) (map unTraceLit outs)) nl) fp0 outs0 nl0
+
   writeCNF g =
        traceOp g "writeCNF" $ \out fp -> writeCNF (tGraph g) (unTraceLit out) fp
 
