diff --git a/registry.cabal b/registry.cabal
--- a/registry.cabal
+++ b/registry.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 5f0e4473870f2ef16f76783ea5f7c22baddb645e5b927eac9d2b80c68b2f1a25
+-- hash: fcba2812a0ecc52110acade5e9fed0482c1c6ea5b50047c57cb08713dc4c9a42
 
 name:           registry
-version:        0.1.6.3
+version:        0.1.7.0
 synopsis:       data structure for assembling components
 description:    This library provides a "Registry" which is a data structure containing a list of functions and values representing dependencies in a directed acyclic graph. A `make` function can then be used to create a value of a specific type out of the registry.
                 You can start with the [README](https://github.com/etorreborre/registry/blob/master/README.md) for a full description of the library.
diff --git a/src/Data/Registry/Lift.hs b/src/Data/Registry/Lift.hs
--- a/src/Data/Registry/Lift.hs
+++ b/src/Data/Registry/Lift.hs
@@ -29,26 +29,15 @@
 instance (Applicative f, b ~ f a) => ApplyVariadic f a b where
   applyVariadic = identity
 
+instance (Monad f, b ~ f a) => ApplyVariadic f (f a) b where
+  applyVariadic = join
+
 instance (Applicative f, ApplyVariadic f a' b', b ~ (f a -> b')) => ApplyVariadic f (a -> a') b where
   applyVariadic f fa = applyVariadic (f <*> fa)
 
 -- | Lift a pure function to effectful arguments and results
 allTo :: forall f a b. ApplyVariadic f a b => a -> b
 allTo a = (applyVariadic :: f a -> b) (pure a)
-
--- | Typeclass for lifting impure functions to effectful arguments and results
-class Monad f => ApplyVariadic1 f a b where
-  applyVariadic1 :: f a -> b
-
-instance (Monad f, b ~ f a) => ApplyVariadic1 f (f a) b where
-  applyVariadic1 = join
-
-instance (Monad f, ApplyVariadic1 f a' b', b ~ (f a -> b')) => ApplyVariadic1 f (a -> a') b where
-  applyVariadic1 f fa = applyVariadic1 (f <*> fa)
-
--- | Lift an effectful function to effectful arguments and results
-argsTo :: forall f a b . ApplyVariadic1 f a b => a -> b
-argsTo a = (applyVariadic1 :: f a -> b) (pure a)
 
 -- | Typeclass for lifting a function with a result of type m b into a function
 --   with a result of type n b
diff --git a/src/Data/Registry/Registry.hs b/src/Data/Registry/Registry.hs
--- a/src/Data/Registry/Registry.hs
+++ b/src/Data/Registry/Registry.hs
@@ -167,11 +167,6 @@
 funTo :: forall m a b . (ApplyVariadic m a b, Typeable a, Typeable b) => a -> Typed b
 funTo a = fun (allTo @m a)
 
--- | This is a shortcut to @fun . argsTo@ where @allTo@ lifts all the inputs
---   to an Applicative context
-funAs :: forall m a b . (ApplyVariadic1 m a b, Typeable a, Typeable b) => a -> Typed b
-funAs a = fun (argsTo @m a)
-
 -- | For a given type @a@ being currently built
 --   when a value of type @b@ is required pass a specific value
 specialize :: forall a b ins out . (Typeable a, Contains a out, Typeable b)
diff --git a/test/Test/Data/Registry/Make/MakeSpec.hs b/test/Test/Data/Registry/Make/MakeSpec.hs
--- a/test/Test/Data/Registry/Make/MakeSpec.hs
+++ b/test/Test/Data/Registry/Make/MakeSpec.hs
@@ -11,7 +11,7 @@
 -- | Effectful creation with lifting
 test_lifted = test "functions can be lifted in order to participate in building instances" $ do
   f1 <- liftIO $
-    do let r =    fun (argsTo @IO newF1)
+    do let r =    funTo @IO newF1
                +: valTo @IO (1::Int)
                +: valTo @IO ("hey"::Text)
                +: end
diff --git a/test/Test/Data/Registry/Make/MemoizeSpec.hs b/test/Test/Data/Registry/Make/MemoizeSpec.hs
--- a/test/Test/Data/Registry/Make/MemoizeSpec.hs
+++ b/test/Test/Data/Registry/Make/MemoizeSpec.hs
@@ -16,9 +16,9 @@
        counter <- newIORef 0
 
        newSingOnce <- once (newSing counter)
-       let r =    fun (argsTo @IO newC1)
-               +: fun (argsTo @IO newC2)
-               +: fun (argsTo @IO newSingOnce)
+       let r =    funTo @IO newC1
+               +: funTo @IO newC2
+               +: funTo @IO newSingOnce
                +: end
        c1 <- make @(IO C1) r
        c2 <- make @(IO C2) r
@@ -32,9 +32,9 @@
     do -- create a counter for the number of instantiations
        counter <- newIORef 0
 
-       let r =    fun (argsTo @IO newC1)
-               +: fun (argsTo @IO newC2)
-               +: fun (argsTo @IO (newSing counter))
+       let r =    funTo @IO newC1
+               +: funTo @IO newC2
+               +: funTo @IO (newSing counter)
                +: end
        r' <- memoize @IO @Sing r
        c1 <- make @(IO C1) r'
diff --git a/test/Test/Data/Registry/MonadRandomSpec.hs b/test/Test/Data/Registry/MonadRandomSpec.hs
--- a/test/Test/Data/Registry/MonadRandomSpec.hs
+++ b/test/Test/Data/Registry/MonadRandomSpec.hs
@@ -101,7 +101,7 @@
 
 test_client_function_with_seeded_values = test "a function using MonadRandom can be executed with the RandomGenerator component and return predetermined values" $ do
   let registry' =
-          funAs @IO (newSeededRandomGenerator (RandomGeneratorConfig 1))
+          funTo @IO (newSeededRandomGenerator (RandomGeneratorConfig 1))
        +: registryProd
 
   client  <- liftIO $ make @(IO Client) registry'
diff --git a/test/Test/Data/Registry/SmallExample.hs b/test/Test/Data/Registry/SmallExample.hs
--- a/test/Test/Data/Registry/SmallExample.hs
+++ b/test/Test/Data/Registry/SmallExample.hs
@@ -65,8 +65,8 @@
 
 -- | Create a registry for all constructors
 registry =
-     funAs @IO (newS3 @IO)
-  +: funAs @IO (newApplication @IO)
+     funTo @IO (newS3 @IO)
+  +: funTo @IO (newApplication @IO)
   +: funTo @IO noLogging
   +: funTo @IO newLinesCounter
   +: valTo @IO (S3Config "bucket" "key")
diff --git a/test/Test/Data/Registry/THSpec.hs b/test/Test/Data/Registry/THSpec.hs
--- a/test/Test/Data/Registry/THSpec.hs
+++ b/test/Test/Data/Registry/THSpec.hs
@@ -87,7 +87,7 @@
 addIO0 _ = pure ""
 
 regIO0 :: Registry '[IO Int] '[IO Text, IO Int, IO Int]
-regIO0 = funAs @IO addIO0 +: valTo @IO (1 :: Int) +: valTo @IO (2 :: Int) +: end
+regIO0 = funTo @IO addIO0 +: valTo @IO (1 :: Int) +: valTo @IO (2 :: Int) +: end
 
 -- See the gory details of why this is necessary: https://gitlab.haskell.org/ghc/ghc/issues/9813
 $(return [])
diff --git a/test/Test/Tutorial/Exercise5.hs b/test/Test/Tutorial/Exercise5.hs
--- a/test/Test/Tutorial/Exercise5.hs
+++ b/test/Test/Tutorial/Exercise5.hs
@@ -32,7 +32,7 @@
   +: funTo @IO newConsole
   +: funTo @IO newUserInput
   +: funTo @IO newRng
-  +: funAs @IO newCheckedSecretReader
+  +: funTo @IO newCheckedSecretReader
   +: valTo @IO (SecretReaderConfig "txe/tests/Test/Tutorial/secret.txt")
   +: end
 
diff --git a/test/Test/Tutorial/Exercise6.hs b/test/Test/Tutorial/Exercise6.hs
--- a/test/Test/Tutorial/Exercise6.hs
+++ b/test/Test/Tutorial/Exercise6.hs
@@ -24,7 +24,7 @@
   +: funTo @IO newConsole
   +: funTo @IO newUserInput
   +: funTo @IO newRng
-  +: funAs @IO newCheckedSecretReader
+  +: funTo @IO newCheckedSecretReader
   +: funTo @IO (tag @"unchecked" newSecretReader)
   +: valTo @IO (SecretReaderConfig "txe/tests/Test/Tutorial/secret.txt")
   +: end
