diff --git a/src/Quasar/Core.hs b/src/Quasar/Core.hs
index d809050e09f2f9a1041076f33b8018478723fa20..096d1448555116ab19ab7905ded90915ed84b4a6 100644
--- a/src/Quasar/Core.hs
+++ b/src/Quasar/Core.hs
@@ -15,7 +15,9 @@ module Quasar.Core (
   cancelTask,
   cancelTaskIO,
   toTask,
+  completedTask,
   successfulTask,
+  failedTask,
 
   -- * AsyncIO
   AsyncIO,
@@ -130,8 +132,15 @@ cancelTaskIO = awaitIO <=< dispose
 toTask :: IsAwaitable r a => a -> Task r
 toTask = Task . toAwaitable
 
+completedTask :: Either SomeException r -> Task r
+completedTask = toTask . completedAwaitable
+
+-- | Alias for `pure`
 successfulTask :: r -> Task r
-successfulTask = Task . successfulAwaitable
+successfulTask = pure
+
+failedTask :: SomeException -> Task r
+failedTask = toTask . failedAwaitable