diff --git a/examples/Books.hs b/examples/Books.hs
--- a/examples/Books.hs
+++ b/examples/Books.hs
@@ -1,32 +1,52 @@
+{-# LANGUAGE DeriveAnyClass     #-}
+{-# LANGUAGE DerivingStrategies #-}
+
 module Books where
 
 import Universum
 
 import Data.Aeson (FromJSON, ToJSON)
 import Data.Aeson.TH (defaultOptions, deriveJSON)
+import Data.Swagger (Swagger, ToParamSchema, ToSchema)
 import Fmt (Buildable (..), (+|), (|+))
 import qualified Network.Wai.Handler.Warp as Warp
 import Servant (FromHttpApiData, Get, JSON, PostCreated, QueryParam, ReqBody, Server, serve,
                 (:<|>) (..), (:>))
+import Servant.Swagger (toSwagger)
+import Servant.Swagger.UI (SwaggerSchemaUI, swaggerSchemaUIServer)
 
 import Servant.Util
 
 newtype Isbn = Isbn Word64
-    deriving (Eq, Show, ToJSON, FromJSON)
+    deriving stock (Eq, Show, Generic)
+    deriving newtype (ToJSON, FromJSON, ToSchema, ToParamSchema, FromHttpApiData)
 
+type instance SupportedFilters Isbn = '[FilterMatching, FilterComparing]
+
+type instance ParamDescription Isbn = "ISBN of a book"
+type instance ParamDescription Text = "Text"
+
 data Book = Book
     { isbn     :: Isbn
     , bookName :: Text
     , author   :: Text
     }
+  deriving (Generic)
+  deriving anyclass (ToSchema)
 
 deriveJSON defaultOptions 'Book
 
 newtype Password = Password Text
-    deriving (FromHttpApiData)
+  deriving stock (Generic)
+  deriving newtype (FromHttpApiData, ToParamSchema)
 
 type GetBooks
-    = Get '[JSON] [Book]
+    =  SortingParams
+         '["isbn" ?: Isbn, "name" ?: Text, "author" ?: Text]
+         '["isbn" ?: 'Asc Isbn]
+    :> FilteringParams ["isbn" ?: 'AutoFilter Isbn, "name" ?: 'AutoFilter Text]
+    :> PaginationParams ('DefPageSize 20)
+    :> Get '[JSON] [Book]
 
 type AddBook
     =  QueryParam "password" Password
@@ -38,9 +58,12 @@
     AddBook
   )
 
+swagger :: Swagger
+swagger = toSwagger @BooksAPI Proxy
+
 booksHandlers :: Server BooksAPI
 booksHandlers =
-    (return [])
+    (\_sorting _filtering _pagination -> return [])
     :<|>
     (\_ book -> return (isbn book))
 
@@ -74,7 +97,8 @@
 serveBooksServer :: IO ()
 serveBooksServer =
     Warp.runSettings warpSettings $
-    serverWithLogging loggingConfig (Proxy @BooksAPI) $ \sp ->
-    serve sp booksHandlers
+    serverWithLogging loggingConfig (Proxy @BooksAPI) $ \(Proxy :: Proxy api) ->
+    serve @(SwaggerSchemaUI "swagger-ui" "swagger.json" :<|> api) Proxy
+      (swaggerSchemaUIServer swagger :<|> booksHandlers)
   where
     loggingConfig = ServantLogConfig putTextLn
diff --git a/examples/Main.hs b/examples/Main.hs
--- a/examples/Main.hs
+++ b/examples/Main.hs
@@ -2,5 +2,7 @@
 
 import Universum
 
+import Books
+
 main :: IO ()
-main = pass
+main = serveBooksServer
diff --git a/servant-util.cabal b/servant-util.cabal
--- a/servant-util.cabal
+++ b/servant-util.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: de73541e9d975e3ed0fdec0ca76af4a65ee45c1ba3e85c9dde8b9b02b103cac4
+-- hash: 162d0c665afc7e688062cc1007aa9fbc6aa2a300ac096144fffd1cd576b6fee1
 
 name:           servant-util
-version:        0.1.0.1
+version:        0.1.0.2
 synopsis:       Servant servers utilities.
 description:    Basement for common Servant combinators like filtering, sorting, pagination and semantical logging.
 category:       Servant, Web
@@ -75,8 +75,6 @@
       src
   default-extensions: AllowAmbiguousTypes BangPatterns ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveGeneric EmptyCase FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings OverloadedLabels PatternSynonyms RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators UndecidableInstances ViewPatterns TypeApplications
   ghc-options: -Wall
-  build-tool-depends:
-      autoexporter:autoexporter
   build-depends:
       QuickCheck
     , aeson
diff --git a/src/Servant/Util/Combinators.hs b/src/Servant/Util/Combinators.hs
--- a/src/Servant/Util/Combinators.hs
+++ b/src/Servant/Util/Combinators.hs
@@ -1,1 +1,10 @@
-{-# OPTIONS_GHC -F -pgmF autoexporter -Wno-dodgy-exports -Wno-unused-imports #-}
+module Servant.Util.Combinators
+  ( module M
+  ) where
+
+import Servant.Util.Combinators.ErrorResponses as M
+import Servant.Util.Combinators.Filtering as M
+import Servant.Util.Combinators.Logging as M
+import Servant.Util.Combinators.Pagination as M
+import Servant.Util.Combinators.Sorting as M
+import Servant.Util.Combinators.Tag as M
diff --git a/src/Servant/Util/Combinators/Filtering/Filters.hs b/src/Servant/Util/Combinators/Filtering/Filters.hs
--- a/src/Servant/Util/Combinators/Filtering/Filters.hs
+++ b/src/Servant/Util/Combinators/Filtering/Filters.hs
@@ -1,2 +1,7 @@
 -- | Various filter types.
-{-# OPTIONS_GHC -F -pgmF autoexporter -Wno-dodgy-exports -Wno-unused-imports #-}
+module Servant.Util.Combinators.Filtering.Filters
+  ( module M
+  ) where
+
+import Servant.Util.Combinators.Filtering.Filters.General as M
+import Servant.Util.Combinators.Filtering.Filters.Like as M
diff --git a/src/Servant/Util/Common.hs b/src/Servant/Util/Common.hs
--- a/src/Servant/Util/Common.hs
+++ b/src/Servant/Util/Common.hs
@@ -1,1 +1,7 @@
-{-# OPTIONS_GHC -F -pgmF autoexporter -Wno-dodgy-exports -Wno-unused-imports #-}
+module Servant.Util.Common
+  ( module M
+  ) where
+
+import Servant.Util.Common.Common as M
+import Servant.Util.Common.HList as M
+import Servant.Util.Common.PolyKinds as M
diff --git a/src/Servant/Util/Dummy.hs b/src/Servant/Util/Dummy.hs
--- a/src/Servant/Util/Dummy.hs
+++ b/src/Servant/Util/Dummy.hs
@@ -1,2 +1,9 @@
 -- | Contains dummy backend implementations for introduced combinators.
-{-# OPTIONS_GHC -F -pgmF autoexporter -Wno-dodgy-exports -Wno-unused-imports #-}
+
+module Servant.Util.Dummy
+  ( module M
+  ) where
+
+import Servant.Util.Dummy.Filtering as M
+import Servant.Util.Dummy.Pagination as M
+import Servant.Util.Dummy.Sorting as M
