diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+#### 0.33.1.1
+
+* Declare correct error return type for derived multi handlers. These
+  were declared as `Reason (Reason e)`, now they are `Reason ()`. This
+  generated confusing documentation.
+
 ### 0.33.1
 
 * Move `Range` from `Rest.Handler` into `rest-types`. Still re-exported.
diff --git a/rest-core.cabal b/rest-core.cabal
--- a/rest-core.cabal
+++ b/rest-core.cabal
@@ -1,5 +1,5 @@
 name:                rest-core
-version:             0.33.1
+version:             0.33.1.1
 description:         Rest API library.
 synopsis:            Rest API library.
 maintainer:          code@silk.co
diff --git a/src/Rest/Container.hs b/src/Rest/Container.hs
--- a/src/Rest/Container.hs
+++ b/src/Rest/Container.hs
@@ -15,6 +15,7 @@
   , mappingO
   , statusO
   , reasonE
+  , defaultE
   ) where
 
 import Data.Maybe
@@ -105,3 +106,6 @@
     reasonDictE :: Error a -> Error (Reason a)
     reasonDictE XmlE  = XmlE
     reasonDictE JsonE = JsonE
+
+defaultE :: Errors ()
+defaultE = Dicts [XmlE, JsonE]
diff --git a/src/Rest/Driver/Routing.hs b/src/Rest/Driver/Routing.hs
--- a/src/Rest/Driver/Routing.hs
+++ b/src/Rest/Driver/Routing.hs
@@ -311,7 +311,8 @@
     newErrDict = L.modify errors reasonE dict
     mNewDict =  L.traverse inputs mappingI
             <=< L.traverse outputs (mappingO <=< statusO (L.get errors newErrDict))
-             $  newErrDict
+             .  L.set errors defaultE
+             $  dict
     newAct (Env hs ps vs) =
       do bs <- lift $ forM (StringHashMap.toList vs) $ \(k, v) -> runErrorT $
            do i <- parseIdent sBy k
