diff --git a/java/src/com/tightvnc/vncviewer/RecordOutputStream.java b/java/src/com/tightvnc/vncviewer/RecordOutputStream.java
index 5b8ef1e..3978dfc 100644
--- a/java/src/com/tightvnc/vncviewer/RecordOutputStream.java
+++ b/java/src/com/tightvnc/vncviewer/RecordOutputStream.java
@@ -5,30 +5,34 @@
 
 public class RecordOutputStream implements DataOutput {
 
-  public RecordOutputStream(RecordInterface ri) {
-    recordInterface = ri;
+  public RecordOutputStream(RfbProto rfbproto) {
+    rfb = rfbproto;
+  }
+
+  private boolean canWrite() {
+    return ((rfb != null) && (rfb.rec != null));
   }
 
   public void write(byte[] b) throws IOException {
-    if (recordInterface.canWrite())
-      recordInterface.write(b);
+    if (canWrite())
+      rfb.rec.write(b);
   }
 
   public void write(byte[] b, int off, int len) throws IOException {
-    if (recordInterface.canWrite())
-      recordInterface.write(b, off, len);
+    if (canWrite())
+      rfb.rec.write(b, off, len);
   }
 
   public void write(int b) throws IOException {
-    if (recordInterface.canWrite())
-      recordInterface.writeIntBE(b);
+    if (canWrite())
+      rfb.rec.writeIntBE(b);
   }
 
   public void writeBoolean(boolean v) { }
 
   public void writeByte(int v) throws IOException {
-    if (recordInterface.canWrite()) {
-      recordInterface.writeByte(v);
+    if (canWrite()) {
+      rfb.rec.writeByte(v);
     }
   }
 
@@ -39,18 +43,18 @@
   public void writeFloat(float v) { }
 
   public void writeInt(int v) throws IOException {
-    if (recordInterface.canWrite())
-      recordInterface.writeIntBE(v);
+    if (canWrite())
+      rfb.rec.writeIntBE(v);
   }
 
   public void writeLong(long v) { }
 
   public void writeShort(int v) throws IOException {
-    if (recordInterface.canWrite())
-      recordInterface.writeShortBE(v);
+    if (canWrite())
+      rfb.rec.writeShortBE(v);
   }
 
   public void writeUTF(String str) { }
-  
-  private RecordInterface recordInterface = null;
+
+  private RfbProto rfb = null;
 }
diff --git a/java/src/com/tightvnc/vncviewer/VncCanvas.java b/java/src/com/tightvnc/vncviewer/VncCanvas.java
index 21ab2ee..59e22fe 100644
--- a/java/src/com/tightvnc/vncviewer/VncCanvas.java
+++ b/java/src/com/tightvnc/vncviewer/VncCanvas.java
@@ -45,8 +45,7 @@
 //
 
 class VncCanvas extends Canvas
-  implements KeyListener, MouseListener, MouseMotionListener, RecordInterface,
-             Repaintable {
+  implements KeyListener, MouseListener, MouseMotionListener, Repaintable {
 
   VncViewer viewer;
   RfbProto rfb;
@@ -120,7 +119,7 @@
     // Input stream for decoders
     RfbInputStream rfbis = new RfbInputStream(rfb);
     // Create output stream for session recording
-    RecordOutputStream ros = new RecordOutputStream(this);
+    RecordOutputStream ros = new RecordOutputStream(rfb);
 
     rawDecoder = new RawDecoder(memGraphics, rfbis);
     rreDecoder = new RREDecoder(memGraphics, rfbis);
@@ -1273,37 +1272,4 @@
       }
     }
   }
-
-  //
-  // Override RecordInterface methods
-  //
-
-  public boolean canWrite() {
-    // We can record if rec is not null
-    return rfb.rec != null;
-  }
-
-  public void write(byte b[]) throws IOException {
-    rfb.rec.write(b);
-  }
-
-  public void write(byte b[], int off, int len) throws IOException {
-    rfb.rec.write(b, off, len);
-  }
-
-  public void writeByte(byte b) throws IOException {
-    rfb.rec.writeByte(b);
-  }
-
-  public void writeByte(int i) throws IOException {
-    rfb.rec.writeByte(i);
-  }
-
-  public void writeIntBE(int v) throws IOException {
-    rfb.rec.writeIntBE(v);
-  }
-
-  public void writeShortBE(int v) throws IOException {
-    rfb.rec.writeShortBE(v);
-  }
 }
