diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,14 @@
 # Changelog
 
-# 0.1.0.1
+## 0.2
 
+* Fix loop in ToJSON instances for StringHashMaps
+* `mapToJSON` and `mapParseJSON` have been removed from `Rest.StringMap.Util`.
+
+#### 0.1.0.1
+
 * Add missing `tagged` dependency
 
-# 0.1.0.0
+#### 0.1.0.0
 
 * Initial release
diff --git a/rest-stringmap.cabal b/rest-stringmap.cabal
--- a/rest-stringmap.cabal
+++ b/rest-stringmap.cabal
@@ -1,5 +1,5 @@
 name:                rest-stringmap
-version:             0.1.0.1
+version:             0.2
 license:             BSD3
 synopsis:            Maps with stringy keys that can be transcoded to JSON and XML.
 description:         Maps with stringy keys that can be transcoded to JSON and XML.
diff --git a/src/Rest/StringMap/HashMap/Lazy.hs b/src/Rest/StringMap/HashMap/Lazy.hs
--- a/src/Rest/StringMap/HashMap/Lazy.hs
+++ b/src/Rest/StringMap/HashMap/Lazy.hs
@@ -52,10 +52,10 @@
   xpickle = pickleMap mapKeys mapKeys
 
 instance (ToString a, ToJSON b) => ToJSON (StringHashMap a b) where
-  toJSON = mapToJSON mapKeys
+  toJSON = toJSON . toHashMap . mapKeys toString
 
-instance (Hashable a, Eq a, IsString a, FromJSON b) => FromJSON (StringHashMap a b) where
-  parseJSON = mapParseJSON mapKeys
+instance (Eq a, Hashable a, IsString a, FromJSON b) => FromJSON (StringHashMap a b) where
+  parseJSON = fmap (mapKeys fromString . fromHashMap) . parseJSON
 
 instance JSONSchema b => JSONSchema (StringHashMap a b) where
   schema _ = mapSchema (Proxy :: Proxy b)
diff --git a/src/Rest/StringMap/HashMap/Strict.hs b/src/Rest/StringMap/HashMap/Strict.hs
--- a/src/Rest/StringMap/HashMap/Strict.hs
+++ b/src/Rest/StringMap/HashMap/Strict.hs
@@ -52,10 +52,10 @@
   xpickle = pickleMap mapKeys mapKeys
 
 instance (ToString a, ToJSON b) => ToJSON (StringHashMap a b) where
-  toJSON = mapToJSON mapKeys
+  toJSON = toJSON . toHashMap . mapKeys toString
 
-instance (Hashable a, Eq a, IsString a, FromJSON b) => FromJSON (StringHashMap a b) where
-  parseJSON = mapParseJSON mapKeys
+instance (Eq a, Hashable a, IsString a, FromJSON b) => FromJSON (StringHashMap a b) where
+  parseJSON = fmap (mapKeys fromString . fromHashMap) . parseJSON
 
 instance JSONSchema b => JSONSchema (StringHashMap a b) where
   schema _ = mapSchema (Proxy :: Proxy b)
diff --git a/src/Rest/StringMap/Map/Lazy.hs b/src/Rest/StringMap/Map/Lazy.hs
--- a/src/Rest/StringMap/Map/Lazy.hs
+++ b/src/Rest/StringMap/Map/Lazy.hs
@@ -48,7 +48,7 @@
   xpickle = pickleMap mapKeys mapKeys
 
 instance (ToString a, ToJSON b) => ToJSON (StringMap a b) where
-  toJSON = toJSON . M.mapKeys toString . unM
+  toJSON = toJSON . M.mapKeys toString . toMap
 
 instance (Ord a, IsString a, FromJSON b) => FromJSON (StringMap a b) where
   parseJSON = fmap (StringMap . M.mapKeys fromString) . parseJSON
diff --git a/src/Rest/StringMap/Map/Strict.hs b/src/Rest/StringMap/Map/Strict.hs
--- a/src/Rest/StringMap/Map/Strict.hs
+++ b/src/Rest/StringMap/Map/Strict.hs
@@ -48,7 +48,7 @@
   xpickle = pickleMap mapKeys mapKeys
 
 instance (ToString a, ToJSON b) => ToJSON (StringMap a b) where
-  toJSON = toJSON . M.mapKeys toString . unM
+  toJSON = toJSON . M.mapKeys toString . toMap
 
 instance (Ord a, IsString a, FromJSON b) => FromJSON (StringMap a b) where
   parseJSON = fmap (StringMap . M.mapKeys fromString) . parseJSON
diff --git a/src/Rest/StringMap/Util.hs b/src/Rest/StringMap/Util.hs
--- a/src/Rest/StringMap/Util.hs
+++ b/src/Rest/StringMap/Util.hs
@@ -2,11 +2,8 @@
   ( pickleStringMap
   , pickleMap
   , mapSchema
-  , mapToJSON
-  , mapParseJSON
   ) where
 
-import Data.Aeson.Types
 import Data.JSON.Schema (JSONSchema, Schema, schema)
 import Data.JSON.Schema.Combinators (field)
 import Data.Proxy (Proxy)
@@ -25,9 +22,3 @@
 
 mapSchema :: JSONSchema a => Proxy a -> Schema
 mapSchema = field "key" False . schema
-
-mapToJSON :: (ToString a, ToJSON m) => ((a -> String) -> m' -> m) -> m' -> Value
-mapToJSON mapKeys = toJSON . mapKeys toString
-
-mapParseJSON :: (FromJSON m, IsString k) => ((String -> k) -> m -> m') -> Value -> Parser m'
-mapParseJSON mapKeys = fmap (mapKeys fromString) . parseJSON
