diff --git a/src/async/context.cpp b/src/async/context.cpp
index d4ec5e9..0b31391 100644
--- a/src/async/context.cpp
+++ b/src/async/context.cpp
@@ -34,8 +34,7 @@
     // Called by the `caller` to indicate the Sender should be stopped.
     virtual void stop() noexcept = 0;
 
-    // Arm the completion event.
-    void arm() noexcept;
+    void start() noexcept;
 
     // Data to share with the worker.
     event_t::time_resolution timeout{};
@@ -70,32 +69,25 @@
         execution::set_value(std::move(this->receiver));
     }
 
-    friend void tag_invoke(execution::start_t,
-                           wait_process_operation& self) noexcept
-    {
-        self.arm();
-    }
-
     R receiver;
 };
 
 /* The sender for the wait/process event. */
 struct wait_process_sender : public context_ref
 {
-    using is_sender = void;
+    using sender_concept = execution::sender_t;
 
     explicit wait_process_sender(context& ctx) : context_ref(ctx) {}
 
-    friend auto tag_invoke(execution::get_completion_signatures_t,
-                           const wait_process_sender&, auto)
+    template <typename Self, class... Env>
+    static constexpr auto get_completion_signatures(Self&&, Env&&...)
         -> execution::completion_signatures<execution::set_value_t()>;
 
     template <execution::receiver R>
-    friend auto tag_invoke(execution::connect_t, wait_process_sender&& self,
-                           R r) -> wait_process_operation<R>
+    auto connect(R r) -> wait_process_operation<R>
     {
         // Create the completion for the wait.
-        return {self.ctx, std::move(r)};
+        return {ctx, std::move(r)};
     }
 };
 
@@ -282,7 +274,7 @@
     }
 }
 
-void details::wait_process_completion::arm() noexcept
+void details::wait_process_completion::start() noexcept
 {
     // Call process.  True indicates something was handled and we do not
     // need to `wait`, because there might be yet another pending operation
diff --git a/src/async/fdio.cpp b/src/async/fdio.cpp
index 94c79d1..df54cf0 100644
--- a/src/async/fdio.cpp
+++ b/src/async/fdio.cpp
@@ -59,7 +59,7 @@
     }
 }
 
-void fdio_completion::arm() noexcept
+void fdio_completion::start() noexcept
 {
     // Set ourselves as the awaiting Receiver
     std::unique_lock l{fdioInstance.lock};
diff --git a/src/async/match.cpp b/src/async/match.cpp
index bedce38..7d05ba6 100644
--- a/src/async/match.cpp
+++ b/src/async/match.cpp
@@ -42,7 +42,7 @@
     }
 }
 
-void match_ns::match_completion::arm() noexcept
+void match_ns::match_completion::start() noexcept
 {
     // Set ourselves as the awaiting Receiver and see if there is a message
     // to immediately complete on.
diff --git a/src/async/mutex.cpp b/src/async/mutex.cpp
index 44694c6..19e5d3c 100644
--- a/src/async/mutex.cpp
+++ b/src/async/mutex.cpp
@@ -34,7 +34,7 @@
 namespace mutex_ns
 {
 
-void mutex_completion::arm() noexcept
+void mutex_completion::start() noexcept
 {
     std::unique_lock l{mutexInstance.lock};
 
