diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
 # Revision history for yasi
 
-## 0.1.1.0 -- 2021-02-13
+## 0.1.1.1 -- 2021-02-14
+
+ * Fix interaction of new variants and abstraction
+
+## 0.1.1.0 -- 2021-02-14
 
  * Add interpolator variants (with different return types)
 
diff --git a/src/Yasi.hs b/src/Yasi.hs
--- a/src/Yasi.hs
+++ b/src/Yasi.hs
@@ -34,7 +34,7 @@
 -- >>> import Data.ByteString (ByteString)
 
 int :: (TH.Exp -> TH.Exp) -> TH.QuasiQuoter
-int f = interpolator '$' (pure . f)
+int = interpolator '$'
 
 -- | The main interpolator, intended to be used with
 -- [@QuasiQuotes@](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/template_haskell.html#extension-QuasiQuotes).
diff --git a/src/Yasi/Internal.hs b/src/Yasi/Internal.hs
--- a/src/Yasi/Internal.hs
+++ b/src/Yasi/Internal.hs
@@ -71,10 +71,10 @@
     lit [] = []
     lit ls = [Lit $ mconcat $ reverse ls]
 
-ipExpr :: TH.Exp -> TH.Exp -> [Segment] -> TH.Q TH.Exp
+ipExpr :: TH.Exp -> (TH.Exp -> TH.Exp) -> [Segment] -> TH.Q TH.Exp
 ipExpr cast combine segs = do
   (ls, lams) <- go segs
-  pure $ lams $ TH.AppE combine (TH.ListE ls)
+  pure $ lams $ combine $ TH.ListE ls
   where
     go = \case
       [] -> pure ([], id)
@@ -96,11 +96,11 @@
 interpolator ::
   Char ->
   -- | postprocess the 'TH.Exp'
-  (TH.Exp -> TH.Q TH.Exp) ->
+  (TH.Exp -> TH.Exp) ->
   TH.QuasiQuoter
 interpolator c pp = TH.QuasiQuoter {..}
   where
-    quoteExp = parseSegments c >=> ipExpr (TH.VarE 'stringy) (TH.VarE 'mconcat) >=> pp
+    quoteExp = parseSegments c >=> ipExpr (TH.VarE 'stringy) (pp . TH.AppE (TH.VarE 'mconcat))
     quotePat = const $ fail "pattern context not supported"
     quoteType = const $ fail "type context not supported"
     quoteDec = const $ fail "declaration context not supported"
diff --git a/test/Interpolations.hs b/test/Interpolations.hs
--- a/test/Interpolations.hs
+++ b/test/Interpolations.hs
@@ -30,11 +30,15 @@
         let p = T.encodeUtf8 "℘"
         [i|℘$a℘$b℘$c℘|] === p <> a <> p <> T.encodeUtf8 b <> p <> T.encodeUtf8 (T.pack c) <> p,
       testProperty "abstractions" . property $ do
-        (a, b) <- (,) <$> forAll genText <*> forAll (Gen.integral $ Range.constant 0 1000)
-        [i|xxx-${}$show-yyy|] a (b :: Int) === "xxx-" <> a <> T.pack (show b) <> "-yyy"
+        (a, b) <- (,) <$> forAll genText <*> forAll genInt
+        [i|xxx-${}$show-yyy|] a (b :: Int) === "xxx-" <> a <> T.pack (show b) <> "-yyy",
+      testProperty "variants" . property $ do
+        (a, b) <- (,) <$> forAll genText <*> forAll genInt
+        [iT|xxx-${}$show-yyy|] a (b :: Int) === "xxx-" <> a <> T.pack (show b) <> "-yyy"
     ]
   where
     genString = Gen.string range Gen.unicodeAll
     genText = Gen.text range Gen.unicodeAll
     genBS = Gen.bytes range
     range = Range.constant 0 20
+    genInt = Gen.integral $ Range.constant 0 1000
diff --git a/yasi.cabal b/yasi.cabal
--- a/yasi.cabal
+++ b/yasi.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name: yasi
-version: 0.1.1.0
+version: 0.1.1.1
 
 synopsis: Yet another string interpolator
 description:
