diff --git a/base/include/hidl/Status.h b/base/include/hidl/Status.h
index c0edb84..f17c968 100644
--- a/base/include/hidl/Status.h
+++ b/base/include/hidl/Status.h
@@ -23,6 +23,7 @@
 #include <android-base/macros.h>
 #include <hidl/HidlInternal.h>
 #include <utils/Errors.h>
+#include <utils/StrongPointer.h>
 
 namespace android {
 namespace hardware {
@@ -146,6 +147,13 @@
     private:
         Status mStatus {};
         mutable bool mCheckedStatus = false;
+    protected:
+        void checkStatus() const {
+            if (!isOk()) {
+                logAlwaysFatal("Attempted to retrieve value from hidl service, "
+                               "but there was a transport error.");
+            }
+        }
     public:
         return_status() {}
         return_status(Status s) : mStatus(s) {}
@@ -190,15 +198,33 @@
     ~Return() = default;
 
     operator T() const {
-        if (!isOk()) {
-            logAlwaysFatal("Attempted to retrieve value from hidl service, "
-                           "but there was a transport error.");
-        }
+        checkStatus();
         return mVal;
     }
 
 };
 
+template<typename T> class Return<sp<T>> : public details::return_status {
+private:
+    sp<T> mVal {};
+public:
+    Return(sp<T> v) : details::return_status(), mVal{v} {}
+    Return(T* v) : details::return_status(), mVal{v} {}
+    // Constructors matching a different type (that is related by inheritance)
+    template<typename U> Return(sp<U> v) : details::return_status(), mVal{v} {}
+    template<typename U> Return(U* v) : details::return_status(), mVal{v} {}
+    Return(Status s) : details::return_status(s) {}
+
+    Return(const Return &) = default;
+    ~Return() = default;
+
+    operator sp<T>() const {
+        checkStatus();
+        return mVal;
+    }
+};
+
+
 template<> class Return<void> : public details::return_status {
 public:
     Return() : details::return_status() {}
