diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+Changed in version 0.7.0.2:
+   * Fix build on Windows with ghc>=7.4.1.
+
 Changed in version 0.7.0.1:
    * Fix GHC build by removing a Haskell comment on an #endif line
 
diff --git a/System/Console/Haskeline/Backend/Posix/Encoder.hs b/System/Console/Haskeline/Backend/Posix/Encoder.hs
--- a/System/Console/Haskeline/Backend/Posix/Encoder.hs
+++ b/System/Console/Haskeline/Backend/Posix/Encoder.hs
@@ -33,7 +33,7 @@
 -- Way-dependent imports
 #ifdef USE_GHC_ENCODINGS
 import GHC.IO.Encoding (initLocaleEncoding)
-import System.Console.Haskeline.Backend.Posix.Recover
+import System.Console.Haskeline.Recover
 #else
 import System.Console.Haskeline.Backend.Posix.IConv
 import Data.ByteString (ByteString)
diff --git a/System/Console/Haskeline/Backend/Posix/Recover.hs b/System/Console/Haskeline/Backend/Posix/Recover.hs
deleted file mode 100644
--- a/System/Console/Haskeline/Backend/Posix/Recover.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-module System.Console.Haskeline.Backend.Posix.Recover where
-
-import GHC.IO.Encoding
-import GHC.IO.Encoding.Failure
-
-transliterateFailure :: TextEncoding -> TextEncoding
-transliterateFailure
-  TextEncoding
-    { mkTextEncoder = mkEncoder
-    , mkTextDecoder = mkDecoder
-    , textEncodingName = name
-    } = TextEncoding
-          { mkTextDecoder = fmap (setRecover
-                                $ recoverDecode TransliterateCodingFailure)
-                            mkDecoder
-          , mkTextEncoder = fmap (setRecover
-                                $ recoverEncode TransliterateCodingFailure)
-                            mkEncoder
-          , textEncodingName = name
-          }
-  where
-    setRecover r x = x { recover = r }
diff --git a/System/Console/Haskeline/History.hs b/System/Console/Haskeline/History.hs
--- a/System/Console/Haskeline/History.hs
+++ b/System/Console/Haskeline/History.hs
@@ -34,7 +34,7 @@
 
 #ifdef USE_GHC_ENCODINGS
 import qualified System.IO as IO
-import System.Console.Haskeline.Backend.Posix.Recover
+import System.Console.Haskeline.Recover
 #else
 import qualified Data.ByteString as B
 import qualified Data.ByteString.UTF8 as UTF8
diff --git a/System/Console/Haskeline/Recover.hs b/System/Console/Haskeline/Recover.hs
new file mode 100644
--- /dev/null
+++ b/System/Console/Haskeline/Recover.hs
@@ -0,0 +1,22 @@
+module System.Console.Haskeline.Recover where
+
+import GHC.IO.Encoding
+import GHC.IO.Encoding.Failure
+
+transliterateFailure :: TextEncoding -> TextEncoding
+transliterateFailure
+  TextEncoding
+    { mkTextEncoder = mkEncoder
+    , mkTextDecoder = mkDecoder
+    , textEncodingName = name
+    } = TextEncoding
+          { mkTextDecoder = fmap (setRecover
+                                $ recoverDecode TransliterateCodingFailure)
+                            mkDecoder
+          , mkTextEncoder = fmap (setRecover
+                                $ recoverEncode TransliterateCodingFailure)
+                            mkEncoder
+          , textEncodingName = name
+          }
+  where
+    setRecover r x = x { recover = r }
diff --git a/haskeline.cabal b/haskeline.cabal
--- a/haskeline.cabal
+++ b/haskeline.cabal
@@ -1,6 +1,6 @@
 Name:           haskeline
 Cabal-Version:  >=1.6
-Version:        0.7.0.1
+Version:        0.7.0.2
 Category:       User Interfaces
 License:        BSD3
 License-File:   LICENSE
@@ -99,6 +99,7 @@
     -- due to GHC bug #5436 which wasn't fixed until 7.4.1
     if !flag(legacy-encoding) && impl(ghc>=7.4) {
         cpp-options: -DUSE_GHC_ENCODINGS
+        Other-modules: System.Console.Haskeline.Recover
     } else {
         Build-depends: utf8-string==0.3.* && >=0.3.6
     }
@@ -118,8 +119,6 @@
             includes: h_iconv.h
             install-includes: h_iconv.h
             Other-modules: System.Console.Haskeline.Backend.Posix.IConv
-        } else {
-            Other-modules: System.Console.Haskeline.Backend.Posix.Recover
         }
         Other-modules: 
                 System.Console.Haskeline.Backend.Posix
