diff --git a/common/rfb/CMsgWriter.cxx b/common/rfb/CMsgWriter.cxx
index 84a0d1f..44b73da 100644
--- a/common/rfb/CMsgWriter.cxx
+++ b/common/rfb/CMsgWriter.cxx
@@ -217,7 +217,7 @@
   endMsg();
 }
 
-void CMsgWriter::keyEvent(rdr::U32 keysym, rdr::U32 keycode, bool down)
+void CMsgWriter::writeKeyEvent(rdr::U32 keysym, rdr::U32 keycode, bool down)
 {
   if (!cp->supportsQEMUKeyEvent || !keycode) {
     /* This event isn't meaningful without a valid keysym */
@@ -240,7 +240,7 @@
 }
 
 
-void CMsgWriter::pointerEvent(const Point& pos, int buttonMask)
+void CMsgWriter::writePointerEvent(const Point& pos, int buttonMask)
 {
   Point p(pos);
   if (p.x < 0) p.x = 0;
@@ -256,7 +256,7 @@
 }
 
 
-void CMsgWriter::clientCutText(const char* str, int len)
+void CMsgWriter::writeClientCutText(const char* str, rdr::U32 len)
 {
   startMsg(msgTypeClientCutText);
   os->pad(3);
diff --git a/common/rfb/CMsgWriter.h b/common/rfb/CMsgWriter.h
index eb9b112..1322186 100644
--- a/common/rfb/CMsgWriter.h
+++ b/common/rfb/CMsgWriter.h
@@ -25,8 +25,6 @@
 
 #include <rdr/types.h>
 
-#include <rfb/InputHandler.h>
-
 namespace rdr { class OutStream; }
 
 namespace rfb {
@@ -34,9 +32,10 @@
   class PixelFormat;
   class ConnParams;
   struct ScreenSet;
+  struct Point;
   struct Rect;
 
-  class CMsgWriter : public InputHandler {
+  class CMsgWriter {
   public:
     CMsgWriter(ConnParams* cp, rdr::OutStream* os);
     virtual ~CMsgWriter();
@@ -53,11 +52,9 @@
 
     void writeFence(rdr::U32 flags, unsigned len, const char data[]);
 
-    // InputHandler implementation
-
-    virtual void keyEvent(rdr::U32 keysym, rdr::U32 keycode, bool down);
-    virtual void pointerEvent(const Point& pos, int buttonMask);
-    virtual void clientCutText(const char* str, int len);
+    void writeKeyEvent(rdr::U32 keysym, rdr::U32 keycode, bool down);
+    void writePointerEvent(const Point& pos, int buttonMask);
+    void writeClientCutText(const char* str, rdr::U32 len);
 
   protected:
     void startMsg(int type);
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 1c0503c..14163aa 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -520,7 +520,7 @@
     vlog.debug("Sending clipboard data (%d bytes)", (int)strlen(buffer));
 
     try {
-      cc->writer()->clientCutText(buffer, ret);
+      cc->writer()->writeClientCutText(buffer, ret);
     } catch (rdr::Exception& e) {
       vlog.error("%s", e.str());
       exit_vncviewer(e.str());
@@ -666,7 +666,7 @@
   if (!viewOnly) {
     if (pointerEventInterval == 0 || buttonMask != lastButtonMask) {
       try {
-        cc->writer()->pointerEvent(pos, buttonMask);
+        cc->writer()->writePointerEvent(pos, buttonMask);
       } catch (rdr::Exception& e) {
         vlog.error("%s", e.str());
         exit_vncviewer(e.str());
@@ -689,7 +689,8 @@
   assert(self);
 
   try {
-    self->cc->writer()->pointerEvent(self->lastPointerPos, self->lastButtonMask);
+    self->cc->writer()->writePointerEvent(self->lastPointerPos,
+                                          self->lastButtonMask);
   } catch (rdr::Exception& e) {
     vlog.error("%s", e.str());
     exit_vncviewer(e.str());
@@ -756,9 +757,9 @@
   try {
     // Fake keycode?
     if (keyCode > 0xff)
-      cc->writer()->keyEvent(keySym, 0, true);
+      cc->writer()->writeKeyEvent(keySym, 0, true);
     else
-      cc->writer()->keyEvent(keySym, keyCode, true);
+      cc->writer()->writeKeyEvent(keySym, keyCode, true);
   } catch (rdr::Exception& e) {
     vlog.error("%s", e.str());
     exit_vncviewer(e.str());
@@ -790,9 +791,9 @@
 
   try {
     if (keyCode > 0xff)
-      cc->writer()->keyEvent(iter->second, 0, false);
+      cc->writer()->writeKeyEvent(iter->second, 0, false);
     else
-      cc->writer()->keyEvent(iter->second, keyCode, false);
+      cc->writer()->writeKeyEvent(iter->second, keyCode, false);
   } catch (rdr::Exception& e) {
     vlog.error("%s", e.str());
     exit_vncviewer(e.str());
diff --git a/vncviewer/Viewport.h b/vncviewer/Viewport.h
index 3895fc7..536fbb2 100644
--- a/vncviewer/Viewport.h
+++ b/vncviewer/Viewport.h
@@ -22,6 +22,8 @@
 
 #include <map>
 
+#include <rfb/Rect.h>
+
 #include <FL/Fl_Widget.H>
 
 class Fl_Menu_Button;
