diff --git a/common/rfb/CMsgHandler.cxx b/common/rfb/CMsgHandler.cxx
index 4188964..65e96f3 100644
--- a/common/rfb/CMsgHandler.cxx
+++ b/common/rfb/CMsgHandler.cxx
@@ -55,10 +55,6 @@
   cp.screenLayout = layout;
 }
 
-void CMsgHandler::setCursor(int w, int h, const Point& hotspot, void* data, void* mask)
-{
-}
-
 void CMsgHandler::setPixelFormat(const PixelFormat& pf)
 {
   cp.setPF(pf);
@@ -69,50 +65,3 @@
   cp.setName(name);
 }
 
-void CMsgHandler::serverInit()
-{
-  throw Exception("CMsgHandler::serverInit called");
-}
-
-void CMsgHandler::framebufferUpdateStart()
-{
-}
-
-void CMsgHandler::framebufferUpdateEnd()
-{
-}
-
-void CMsgHandler::beginRect(const Rect& r, unsigned int encoding)
-{
-}
-
-void CMsgHandler::endRect(const Rect& r, unsigned int encoding)
-{
-}
-
-
-void CMsgHandler::setColourMapEntries(int firstColour, int nColours,
-                                      rdr::U16* rgbs)
-{
-  throw Exception("CMsgHandler::setColourMapEntries called");
-}
-
-void CMsgHandler::bell()
-{
-}
-
-void CMsgHandler::serverCutText(const char* str, rdr::U32 len)
-{
-}
-
-void CMsgHandler::fillRect(const Rect& r, Pixel pix)
-{
-}
-
-void CMsgHandler::imageRect(const Rect& r, void* pixels)
-{
-}
-
-void CMsgHandler::copyRect(const Rect& r, int srcX, int srcY)
-{
-}
diff --git a/common/rfb/CMsgHandler.h b/common/rfb/CMsgHandler.h
index 79ee86c..9205ef5 100644
--- a/common/rfb/CMsgHandler.h
+++ b/common/rfb/CMsgHandler.h
@@ -49,24 +49,24 @@
                                         int w, int h,
                                         const ScreenSet& layout);
     virtual void setCursor(int width, int height, const Point& hotspot,
-                           void* data, void* mask);
+                           void* data, void* mask) = 0;
     virtual void setPixelFormat(const PixelFormat& pf);
     virtual void setName(const char* name);
-    virtual void serverInit();
+    virtual void serverInit() = 0;
 
-    virtual void framebufferUpdateStart();
-    virtual void framebufferUpdateEnd();
-    virtual void beginRect(const Rect& r, unsigned int encoding);
-    virtual void endRect(const Rect& r, unsigned int encoding);
+    virtual void framebufferUpdateStart() = 0;
+    virtual void framebufferUpdateEnd() = 0;
+    virtual void beginRect(const Rect& r, unsigned int encoding) = 0;
+    virtual void endRect(const Rect& r, unsigned int encoding) = 0;
 
     virtual void setColourMapEntries(int firstColour, int nColours,
-				     rdr::U16* rgbs);
-    virtual void bell();
-    virtual void serverCutText(const char* str, rdr::U32 len);
+				     rdr::U16* rgbs) = 0;
+    virtual void bell() = 0;
+    virtual void serverCutText(const char* str, rdr::U32 len) = 0;
 
-    virtual void fillRect(const Rect& r, Pixel pix);
-    virtual void imageRect(const Rect& r, void* pixels);
-    virtual void copyRect(const Rect& r, int srcX, int srcY);
+    virtual void fillRect(const Rect& r, Pixel pix) = 0;
+    virtual void imageRect(const Rect& r, void* pixels) = 0;
+    virtual void copyRect(const Rect& r, int srcX, int srcY) = 0;
 
     ConnParams cp;
   };
