diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.4.2 (2018-01-22)
+
+Minor release to allow docs to be generated on Hackage.
+
 ## 0.4.1 (2018-01-17)
 
 * Fixed potential security issue in `Ed25519` (see https://github.com/jml/haskell-spake2/pull/16),
diff --git a/cmd/interop-entrypoint/Main.hs b/cmd/interop-entrypoint/Main.hs
--- a/cmd/interop-entrypoint/Main.hs
+++ b/cmd/interop-entrypoint/Main.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeApplications #-}
 -- | Entrypoint for testing interoperability.
 --
 -- Interoperability harness lives at <https://github.com/leastauthority/spake2-interop-test>
@@ -34,6 +35,7 @@
   )
 import Crypto.Spake2.Group (AbelianGroup, Group(..))
 import Crypto.Spake2.Groups (Ed25519(..))
+import Data.String (String)
 
 
 data Config = Config Side Password deriving (Eq, Ord)
@@ -52,7 +54,7 @@
         "B" -> pure SideB
         "Symmetric" -> pure Symmetric
         unknown -> throwError $ "Unrecognized side: " <> unknown
-    passwordParser = makePassword . toS <$> str
+    passwordParser = makePassword . toS @String @ByteString <$> str
 
 
 -- | Terminate the test with a failure, printing a message to stderr.
diff --git a/spake2.cabal b/spake2.cabal
--- a/spake2.cabal
+++ b/spake2.cabal
@@ -1,9 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.17.1.
+-- This file has been generated from package.yaml by hpack version 0.20.0.
 --
 -- see: https://github.com/sol/hpack
+--
+-- hash: 3c5a1b2b5e9f86ca9de664d071fbc303d2580244cbb701bd6e4094434a0711ee
 
 name:           spake2
-version:        0.4.1
+version:        0.4.2
 synopsis:       Implementation of the SPAKE2 Password-Authenticated Key Exchange algorithm
 description:    This library implements the SPAKE2 password-authenticated key exchange
                 ("PAKE") algorithm. This allows two parties, who share a weak password, to
@@ -34,11 +36,11 @@
   default-extensions: NoImplicitPrelude OverloadedStrings
   ghc-options: -Wall -Wno-type-defaults
   build-depends:
-      base >= 4.9 && < 5
-    , protolude >= 0.2
+      base >=4.9 && <5
     , bytestring
     , cryptonite
     , memory
+    , protolude >=0.2
   exposed-modules:
       Crypto.Spake2
       Crypto.Spake2.Group
@@ -47,6 +49,8 @@
       Crypto.Spake2.Groups.IntegerGroup
       Crypto.Spake2.Math
       Crypto.Spake2.Util
+  other-modules:
+      Paths_spake2
   default-language: Haskell2010
 
 executable haskell-spake2-interop-entrypoint
@@ -56,12 +60,14 @@
   default-extensions: NoImplicitPrelude OverloadedStrings
   ghc-options: -Wall -Wno-type-defaults -threaded
   build-depends:
-      base >= 4.9 && < 5
-    , protolude >= 0.2
+      base >=4.9 && <5
     , cryptonite
     , memory
     , optparse-applicative
+    , protolude >=0.2
     , spake2
+  other-modules:
+      Paths_spake2
   default-language: Haskell2010
 
 test-suite tasty
@@ -72,14 +78,14 @@
   default-extensions: NoImplicitPrelude OverloadedStrings
   ghc-options: -Wall -Wno-type-defaults
   build-depends:
-      base >= 4.9 && < 5
-    , protolude >= 0.2
+      QuickCheck
     , aeson
+    , base >=4.9 && <5
     , bytestring
     , cryptonite
     , memory
     , process
-    , QuickCheck
+    , protolude >=0.2
     , spake2
     , tasty
     , tasty-hspec
@@ -87,4 +93,5 @@
       Groups
       Integration
       Spake2
+      Paths_spake2
   default-language: Haskell2010
