diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index a47220a..4a60016 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -49,8 +49,6 @@
   RfbProto rfb;
   Thread rfbThread;
 
-  FbsInputStream fbsStream;
-
   Frame vncFrame;
   Container vncContainer;
   ScrollPane desktopScrollPane;
@@ -121,8 +119,7 @@
 
     try {
       URL url = new URL(sessionURL);
-      fbsStream = new FbsInputStream(url.openStream());
-      rfb = new RfbProto(fbsStream);
+      rfb = new RfbProto(url);
 
       vc = new VncCanvas(this);
       gbc.weightx = 1.0;
@@ -161,14 +158,12 @@
       while (true) {
 	try {
 	  setPaused(true);
-	  fbsStream.setTimeOffset(initialTimeOffset);
-	  fbsStream.setSpeed(playbackSpeed);
+	  rfb.fbs.setTimeOffset(initialTimeOffset);
+	  rfb.fbs.setSpeed(playbackSpeed);
 	  vc.processNormalProtocol();
 	} catch (EOFException e) {
 	  initialTimeOffset = 0;
-	  fbsStream.close();
-	  fbsStream = new FbsInputStream(url.openStream());
-	  rfb.newInputStream(fbsStream);
+	  rfb.newSession(url);
 	}
       }
 
@@ -184,12 +179,10 @@
   public void setPaused(boolean paused) {
     if (showControls)
       buttonPanel.setPaused(paused);
-    if (fbsStream != null) {
-      if (paused) {
-	fbsStream.pausePlayback();
-      } else {
-	fbsStream.resumePlayback();
-      }
+    if (paused) {
+      rfb.fbs.pausePlayback();
+    } else {
+      rfb.fbs.resumePlayback();
     }
   }
 
@@ -199,17 +192,17 @@
 
   public void setSpeed(double speed) {
     playbackSpeed = speed;
-    fbsStream.setSpeed(speed);
+    rfb.fbs.setSpeed(speed);
   }
 
   public void setPos(int pos) {
-    fbsStream.setTimeOffset(pos * 1000);
+    rfb.fbs.setTimeOffset(pos * 1000);
   }
 
 
   public void updatePos() {
     if (showControls)
-      buttonPanel.setPos((int)(fbsStream.getTimeOffset() / 1000));
+      buttonPanel.setPos((int)(rfb.fbs.getTimeOffset() / 1000));
   }
 
   //
diff --git a/java/src/com/tightvnc/rfbplayer/RfbProto.java b/java/src/com/tightvnc/rfbplayer/RfbProto.java
index 4cada13..2faf66c 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbProto.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbProto.java
@@ -27,7 +27,7 @@
 import java.io.*;
 import java.awt.*;
 import java.awt.event.*;
-import java.net.Socket;
+import java.net.*;
 
 class RfbProto {
 
@@ -73,6 +73,7 @@
 
   final static int TightMinToCompress   = 12;
 
+  FbsInputStream fbs;
   DataInputStream is;
 
 
@@ -80,12 +81,16 @@
   // Constructor.
   //
 
-  RfbProto(InputStream is) throws Exception {
-    newInputStream(is);
+  RfbProto(URL url) throws Exception {
+    fbs = null;
+    newSession(url);
   }
 
-  public void newInputStream(InputStream is) throws Exception {
-    this.is = new DataInputStream(is);
+  public void newSession(URL url) throws Exception {
+    if (fbs != null)
+      fbs.close();
+    fbs = new FbsInputStream(url.openStream());
+    is = new DataInputStream(fbs);
 
     readVersionMsg();
     if (readAuthScheme() != NoAuth) {
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index 6332532..b87763e 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -815,7 +815,7 @@
   //
 
   void scheduleRepaint(int x, int y, int w, int h) {
-    if (player.fbsStream.isSeeking()) {
+    if (rfb.fbs.isSeeking()) {
       // Do nothing, and remember we are seeking.
       seekMode = true;
     } else {
