diff --git a/src/Quasar/Awaitable.hs b/src/Quasar/Awaitable.hs
index 709462dd0afd82464b3d6a743431e1b132f1a20d..69afe39ff63100d252821b171a4539bdb03d9201 100644
--- a/src/Quasar/Awaitable.hs
+++ b/src/Quasar/Awaitable.hs
@@ -107,14 +107,14 @@ instance MonadAwait Awaitable where
   await = toAwaitable
 
 instance Functor Awaitable where
-  fmap fn (Awaitable x) = fnAwaitable $ fn <$> runAwaitable x
+  fmap fn (Awaitable x) = mkMonadicAwaitable $ fn <$> runAwaitable x
 
 instance Applicative Awaitable where
   pure = successfulAwaitable
-  liftA2 fn (Awaitable fx) (Awaitable fy) = fnAwaitable $ liftA2 fn (runAwaitable fx) (runAwaitable fy)
+  liftA2 fn (Awaitable fx) (Awaitable fy) = mkMonadicAwaitable $ liftA2 fn (runAwaitable fx) (runAwaitable fy)
 
 instance Monad Awaitable where
-  (Awaitable fx) >>= fn = fnAwaitable $ runAwaitable fx >>= runAwaitable . fn
+  (Awaitable fx) >>= fn = mkMonadicAwaitable $ runAwaitable fx >>= runAwaitable . fn
 
 instance Semigroup r => Semigroup (Awaitable r) where
   x <> y = liftA2 (<>) x y
@@ -126,7 +126,7 @@ instance MonadThrow Awaitable where
   throwM = failedAwaitable . toException
 
 instance MonadCatch Awaitable where
-  catch awaitable handler = fnAwaitable do
+  catch awaitable handler = mkMonadicAwaitable do
     runAwaitable awaitable `catch` \ex -> runAwaitable (handler ex)
 
 instance MonadFail Awaitable where
@@ -141,14 +141,14 @@ instance MonadPlus Awaitable
 
 
 
-newtype FnAwaitable r = FnAwaitable (forall m. (MonadQuerySTM m) => m r)
+newtype MonadicAwaitable r = MonadicAwaitable (forall m. (MonadQuerySTM m) => m r)
 
-instance IsAwaitable r (FnAwaitable r) where
-  runAwaitable (FnAwaitable x) = x
+instance IsAwaitable r (MonadicAwaitable r) where
+  runAwaitable (MonadicAwaitable x) = x
   cacheAwaitable = cacheAwaitableDefaultImplementation
 
-fnAwaitable :: (forall m. (MonadQuerySTM m) => m r) -> Awaitable r
-fnAwaitable fn = toAwaitable $ FnAwaitable fn
+mkMonadicAwaitable :: (forall m. (MonadQuerySTM m) => m r) -> Awaitable r
+mkMonadicAwaitable fn = toAwaitable $ MonadicAwaitable fn
 
 
 newtype CompletedAwaitable r = CompletedAwaitable (Either SomeException r)
@@ -182,7 +182,7 @@ awaitSTM = cacheAwaitable . unsafeAwaitSTM
 --
 -- Use `retry` to signal that the awaitable is not yet completed and `throwM`/`throwSTM` to set the awaitable to failed.
 unsafeAwaitSTM :: STM a -> Awaitable a
-unsafeAwaitSTM query = fnAwaitable $ querySTM query
+unsafeAwaitSTM query = mkMonadicAwaitable $ querySTM query
 
 
 class MonadCatch m => MonadQuerySTM m where
@@ -340,7 +340,7 @@ awaitSuccessOrFailure = fireAndForget . toAwaitable
 -- ** Awaiting multiple awaitables
 
 awaitEither :: (IsAwaitable ra a, IsAwaitable rb b) => a -> b -> Awaitable (Either ra rb)
-awaitEither x y = fnAwaitable $ stepBoth (runAwaitable x) (runAwaitable y)
+awaitEither x y = mkMonadicAwaitable $ stepBoth (runAwaitable x) (runAwaitable y)
   where
     stepBoth :: MonadQuerySTM m => AwaitableStepM ra -> AwaitableStepM rb -> m (Either ra rb)
     stepBoth (AwaitableCompleted resultX) _ = pure $ Left resultX
@@ -354,7 +354,7 @@ awaitEither x y = fnAwaitable $ stepBoth (runAwaitable x) (runAwaitable y)
 
 
 awaitAny :: IsAwaitable r a => NonEmpty a -> Awaitable r
-awaitAny xs = fnAwaitable $ stepAll Empty Empty $ runAwaitable <$> fromList (toList xs)
+awaitAny xs = mkMonadicAwaitable $ stepAll Empty Empty $ runAwaitable <$> fromList (toList xs)
   where
     stepAll
       :: MonadQuerySTM m