diff --git a/include/hidl/HidlSupport.h b/include/hidl/HidlSupport.h
index 2689ab4..4b0e369 100644
--- a/include/hidl/HidlSupport.h
+++ b/include/hidl/HidlSupport.h
@@ -194,6 +194,7 @@
     bool operator==(const hidl_version& other) {
         return (mMajor == other.get_major() && mMinor == other.get_minor());
     }
+
     uint16_t get_major() const { return mMajor; }
     uint16_t get_minor() const { return mMinor; }
 
@@ -220,8 +221,40 @@
     return hidl_version(major,minor);
 }
 
+#define DECLARE_REGISTER_AND_GET_SERVICE(INTERFACE)                                      \
+    static ::android::sp<I##INTERFACE> getService(                                       \
+            const ::android::String16 &serviceName,                                      \
+            const hidl_version &version);                                                \
+    status_t registerAsService(                                                            \
+            const ::android::String16& serviceName,                                      \
+            const hidl_version &version);
+
+#define IMPLEMENT_REGISTER_AND_GET_SERVICE(INTERFACE)                                    \
+    ::android::sp<I##INTERFACE> I##INTERFACE::getService(                                \
+            const ::android::String16 &serviceName,                                      \
+            const hidl_version &version /* TODO get version from IFoo directly */)       \
+    {                                                                                    \
+        sp<I##INTERFACE> iface;                                                          \
+        const sp<IServiceManager> sm = defaultServiceManager();                          \
+        if (sm != nullptr) {                                                             \
+            sp<IBinder> binderIface = sm->getService(serviceName, version);              \
+            iface = IHw##INTERFACE::asInterface(binderIface);                            \
+        }                                                                                \
+        /* TODO: if we don't have a binder interface, try to instantiate default */      \
+        return iface;                                                                    \
+    }                                                                                    \
+    status_t I##INTERFACE::registerAsService(                                              \
+            const ::android::String16& serviceName,                                      \
+            const hidl_version &version)                                                 \
+    {                                                                                    \
+        sp<Bn##INTERFACE> binderIface = new Bn##INTERFACE(this);                         \
+        const sp<IServiceManager> sm = defaultServiceManager();                          \
+        return sm->addService(serviceName, binderIface, version);                        \
+    }
+
 }  // namespace hardware
 }  // namespace android
 
+
 #endif  // ANDROID_HIDL_SUPPORT_H
 
diff --git a/include/hidl/IServiceManager.h b/include/hidl/IServiceManager.h
index 5d6155a..758384c 100644
--- a/include/hidl/IServiceManager.h
+++ b/include/hidl/IServiceManager.h
@@ -26,11 +26,9 @@
 namespace android {
 namespace hardware {
 
-class IServiceManager : public IInterface
+class IServiceManager : virtual public RefBase
 {
 public:
-    DECLARE_HWBINDER_META_INTERFACE(ServiceManager);
-
     /**
      * Retrieve an existing service, blocking for a few seconds
      * if it doesn't yet exist.
@@ -54,7 +52,12 @@
                                             const android::hardware::hidl_version& version,
                                             bool allowIsolated = false) = 0;
 
-    enum {
+};
+
+struct IHwServiceManager : public IServiceManager, public IInterface {
+    DECLARE_HWBINDER_META_INTERFACE(ServiceManager);
+
+    enum Call {
         GET_SERVICE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION,
         CHECK_SERVICE_TRANSACTION,
         ADD_SERVICE_TRANSACTION,
