diff --git a/bindings/single.go b/bindings/single.go
index e7949fd5f52059b0399db3dffba5f058a2eae16c..ee1ea6fb74fd7f67df1105f62d6b3af4a59f7c07 100644
--- a/bindings/single.go
+++ b/bindings/single.go
@@ -76,21 +76,21 @@ func TransmitSingleUse(e2eID int, recipient []byte, tag string, payload,
 //  - cb - the callback that will be called when a response is received
 //
 // Returns:
-//  - StopFunc - a function used to stop the listener
-func Listen(e2eID int, tag string, cb SingleUseCallback) (StopFunc, error) {
+//  - Stopper - an interface containing a function used to stop the listener
+func Listen(e2eID int, tag string, cb SingleUseCallback) (Stopper, error) {
 	e2eCl, err := e2eTrackerSingleton.get(e2eID)
 	if err != nil {
 		return nil, err
 	}
 
-	listener := singleUseListener{scb: cb}
+	suListener := singleUseListener{scb: cb}
 	dhpk, err := e2eCl.api.GetReceptionIdentity().GetDHKeyPrivate()
 	if err != nil {
 		return nil, err
 	}
 	l := single.Listen(tag, e2eCl.api.GetReceptionIdentity().ID, dhpk,
-		e2eCl.api.GetCmix(), e2eCl.api.GetStorage().GetE2EGroup(), listener)
-	return l.Stop, nil
+		e2eCl.api.GetCmix(), e2eCl.api.GetStorage().GetE2EGroup(), suListener)
+	return &stopper{l: l}, nil
 }
 
 // JSON Types
@@ -153,9 +153,10 @@ type SingleUseCallbackReport struct {
 // Function Types                                                             //
 ////////////////////////////////////////////////////////////////////////////////
 
-// StopFunc is the function to stop a listener returned to the bindings layer
-// when one is started.
-type StopFunc func()
+// Stopper is a public interface returned by Listen, allowing users to stop the registered listener.
+type Stopper interface {
+	Stop()
+}
 
 // SingleUseCallback func is passed into Listen and called when messages are
 // received.
@@ -209,6 +210,18 @@ func (sl singleUseListener) Callback(
 	sl.scb.Callback(json.Marshal(scr))
 }
 
+/* Listener stopper */
+
+// stopper is the internal struct backing the Stopper interface, allowing us
+// to pass the listener Stop method to the bindings layer.
+type stopper struct {
+	l single.Listener
+}
+
+func (s *stopper) Stop() {
+	s.l.Stop()
+}
+
 /* Response Struct */
 
 // singleUseResponse is the private struct backing SingleUseResponse, which