Index: src/xplcommon/win32/Completer.h
===================================================================
--- src/xplcommon/win32/Completer.h	(revision 22)
+++ src/xplcommon/win32/Completer.h	(revision 24)
@@ -32,4 +32,6 @@
 //------------------------------------------------------------------------------
 
+#include "../Failable.h"
+
 #include "Overlapped.h"
 #include "Overlappable.h"
@@ -47,5 +49,5 @@
  * object is created and stored in this object.
  */
-class Completer
+class Completer : public ::xplcommon::FailableReference<Completer>
 {
 protected:
@@ -110,4 +112,17 @@
      */
     virtual void handleWaitedResult(DWORD size) = 0;
+
+private:
+    /**
+     * Get the failable object.
+     */
+    const ::xplcommon::Failable& getFailable() const;
+
+    /**
+     * Get the failable object.
+     */
+    ::xplcommon::Failable& getFailable();
+
+    friend class FailableReference<Completer>;
 };
 
@@ -180,4 +195,18 @@
 //------------------------------------------------------------------------------
 
+inline const ::xplcommon::Failable& Completer::getFailable() const
+{
+    return overlappable;
+}
+
+//------------------------------------------------------------------------------
+
+inline ::xplcommon::Failable& Completer::getFailable()
+{
+    return overlappable;
+}
+
+//------------------------------------------------------------------------------
+
 } /* namespace xplcommon::win32 */ } /* namespace xplcommon */
 
Index: src/xplcommon/win32/LocalAcceptor.h
===================================================================
--- src/xplcommon/win32/LocalAcceptor.h	(revision 23)
+++ src/xplcommon/win32/LocalAcceptor.h	(revision 24)
@@ -47,6 +47,5 @@
  * local server socket, i.e. named pipe.
  */
-class LocalAcceptor : public Completer,
-                      public FailableReference<LocalAcceptor>
+class LocalAcceptor : public Completer
 {
 private:
@@ -114,16 +113,4 @@
     virtual void handleWaitedResult(DWORD size);
 
-private:
-    /**
-     * Get the failable object.
-     */
-    const ::xplcommon::Failable& getFailable() const;
-
-    /**
-     * Get the failable object.
-     */
-    ::xplcommon::Failable& getFailable();
-
-    friend class FailableReference<LocalAcceptor>;
     friend class LocalServerSocket;
 };
@@ -163,18 +150,4 @@
 //------------------------------------------------------------------------------
 
-inline const ::xplcommon::Failable& LocalAcceptor::getFailable() const
-{
-    return overlappable;
-}
-
-//------------------------------------------------------------------------------
-
-inline ::xplcommon::Failable& LocalAcceptor::getFailable()
-{
-    return overlappable;
-}
-
-//------------------------------------------------------------------------------
-
 } /* namespace xplcommon::win32 */ } /* namespace xplcommon */
 
Index: src/xplcommon/win32/StreamBuffer.h
===================================================================
--- src/xplcommon/win32/StreamBuffer.h	(revision 23)
+++ src/xplcommon/win32/StreamBuffer.h	(revision 24)
@@ -47,6 +47,5 @@
  * Base class for stream reading and writing buffers.
  */
-class StreamBuffer : public ::xplcommon::Buffer, public Completer,
-                     public ::xplcommon::FailableReference<StreamBuffer>
+class StreamBuffer : public ::xplcommon::Buffer, public Completer
 {
 protected:
@@ -64,17 +63,4 @@
      */
     BufferedStream& getStream() const;
-
-private:
-    /**
-     * Get the failable object.
-     */
-    const ::xplcommon::Failable& getFailable() const;
-
-    /**
-     * Get the failable object.
-     */
-    ::xplcommon::Failable& getFailable();
-
-    friend class FailableReference<StreamBuffer>;
 };
 
@@ -98,18 +84,4 @@
 //------------------------------------------------------------------------------
 
-inline const ::xplcommon::Failable& StreamBuffer::getFailable() const
-{
-    return overlappable;
-}
-
-//------------------------------------------------------------------------------
-
-inline ::xplcommon::Failable& StreamBuffer::getFailable()
-{
-    return overlappable;
-}
-
-//------------------------------------------------------------------------------
-
 } /* namespace xplcommon::win32 */ } /* namespace xplcommon */
 
