diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 306c62e..167f771 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -17,11 +17,10 @@
 //  USA.
 //
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.awt.*;
 import java.awt.event.*;
-import java.io.*;
 
 class ButtonPanel extends Panel implements ActionListener {
 
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index 724ff30..e49d7f8 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -21,7 +21,7 @@
 // FbsInputStream.java
 //
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.io.*;
 import java.util.*;
diff --git a/java/src/com/tightvnc/rfbplayer/LWScrollPane.java b/java/src/com/tightvnc/rfbplayer/LWScrollPane.java
index c9b4960..40bed89 100644
--- a/java/src/com/tightvnc/rfbplayer/LWScrollPane.java
+++ b/java/src/com/tightvnc/rfbplayer/LWScrollPane.java
@@ -1,5 +1,5 @@
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.awt.*;
 import java.awt.event.*;
diff --git a/java/src/com/tightvnc/rfbplayer/PARfbSender.java b/java/src/com/tightvnc/rfbplayer/PARfbSender.java
index c73fe25..813f6c1 100644
--- a/java/src/com/tightvnc/rfbplayer/PARfbSender.java
+++ b/java/src/com/tightvnc/rfbplayer/PARfbSender.java
@@ -1,5 +1,5 @@
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.applet.*;
 
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index be081a0..c55517e 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -18,7 +18,7 @@
 //  USA.
 //
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.awt.*;
 import java.awt.event.*;
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayerSetDisplaySize.java b/java/src/com/tightvnc/rfbplayer/RfbPlayerSetDisplaySize.java
index 917b112..62efbdb 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayerSetDisplaySize.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayerSetDisplaySize.java
@@ -1,5 +1,5 @@
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.applet.*;
 
diff --git a/java/src/com/tightvnc/rfbplayer/RfbProto.java b/java/src/com/tightvnc/rfbplayer/RfbProto.java
index df26019..0925975 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbProto.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbProto.java
@@ -24,11 +24,9 @@
 // RfbProto.java
 //
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.io.*;
-import java.awt.*;
-import java.awt.event.*;
 import java.net.*;
 
 class RfbProto {
diff --git a/java/src/com/tightvnc/rfbplayer/RfbSharedStatic.java b/java/src/com/tightvnc/rfbplayer/RfbSharedStatic.java
index 377ede3..59d77f5 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbSharedStatic.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbSharedStatic.java
@@ -1,5 +1,5 @@
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.applet.*;
 
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index f27a350..3aad32a 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -21,13 +21,11 @@
 //  USA.
 //
 
-package com.HorizonLive.RfbPlayer;
+package com.wimba.RfbPlayer;
 
 import java.awt.*;
-import java.awt.event.*;
 import java.awt.image.*;
 import java.io.*;
-import java.lang.*;
 import java.util.*;
 import java.util.zip.*;
 
@@ -370,8 +368,6 @@
       case RfbProto.FramebufferUpdate:
         rfb.readFramebufferUpdate();
 
-        boolean cursorPosReceived = false;
-
         for (int i = 0; i < rfb.updateNRects; i++) {
           rfb.readFramebufferUpdateRectHdr();
           int rx = rfb.updateRectX, ry = rfb.updateRectY;
@@ -396,7 +392,6 @@
 
           if (rfb.updateRectEncoding == rfb.EncodingPointerPos) {
             softCursorMove(rx, ry);
-            cursorPosReceived = true;
             continue;
           }
 
@@ -437,7 +432,7 @@
         break;
 
       case RfbProto.ServerCutText:
-        String s = rfb.readServerCutText();
+        rfb.readServerCutText();
         break;
 
       default:
@@ -766,7 +761,6 @@
 
     // Read filter id and parameters.
     int numColors = 0, rowSize = w;
-    byte[] palette8 = new byte[2];
     int[] palette24 = new int[256];
     boolean useGradient = false;
     if ((comp_ctl & rfb.TightExplicitFilter) != 0) {
@@ -1159,7 +1153,7 @@
       rfb.is.readFully(maskBuf);
 
       // Decode pixel data into softCursorPixels[].
-      byte pixByte, maskByte;
+      byte maskByte;
       int x, y, n, result;
       int i = 0;
       for (y = 0; y < height; y++) {
@@ -1217,12 +1211,6 @@
     //if (scaleCursor == 0 || !inputEnabled)
     //scaleCursor = 100;
 
-    // Save original cursor coordinates.
-    int x = cursorX - hotX;
-    int y = cursorY - hotY;
-    int w = cursorWidth;
-    int h = cursorHeight;
-
     cursorWidth = (origCursorWidth * scaleCursor + 50) / 100;
     cursorHeight = (origCursorHeight * scaleCursor + 50) / 100;
     hotX = (origHotX * scaleCursor + 50) / 100;
