diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/http/HttpRandomAccessContent.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/http/HttpRandomAccessContent.java
index d3a222f..2bfa349 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/http/HttpRandomAccessContent.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/http/HttpRandomAccessContent.java
@@ -37,8 +37,8 @@
     private final HttpFileObject<FS> fileObject;
     private final HttpFileSystem fileSystem;
 
-    private DataInputStream dis;
-    private MonitorInputStream mis;
+    private DataInputStream dataInputStream;
+    private MonitorInputStream monitorInputStream;
 
     HttpRandomAccessContent(final HttpFileObject<FS> fileObject, final RandomAccessMode mode) {
         super(mode);
@@ -49,17 +49,17 @@
 
     @Override
     public void close() throws IOException {
-        if (dis != null) {
-            dis.close();
-            dis = null;
-            mis = null;
+        if (dataInputStream != null) {
+            dataInputStream.close();
+            dataInputStream = null;
+            monitorInputStream = null;
         }
     }
 
     @Override
     protected DataInputStream getDataInputStream() throws IOException {
-        if (dis != null) {
-            return dis;
+        if (dataInputStream != null) {
+            return dataInputStream;
         }
 
         final GetMethod getMethod = new GetMethod();
@@ -71,16 +71,16 @@
                     Long.valueOf(filePointer), Integer.valueOf(status));
         }
 
-        mis = new HttpFileObject.HttpInputStream(getMethod);
+        monitorInputStream = new HttpFileObject.HttpInputStream(getMethod);
         // If the range request was ignored
         if (status == HttpURLConnection.HTTP_OK) {
-            final long skipped = mis.skip(filePointer);
+            final long skipped = monitorInputStream.skip(filePointer);
             if (skipped != filePointer) {
                 throw new FileSystemException("vfs.provider.http/get-range.error", fileObject.getName(),
                         Long.valueOf(filePointer), Integer.valueOf(status));
             }
         }
-        dis = new DataInputStream(new FilterInputStream(mis) {
+        dataInputStream = new DataInputStream(new FilterInputStream(monitorInputStream) {
             @Override
             public int read() throws IOException {
                 final int ret = super.read();
@@ -109,7 +109,7 @@
             }
         });
 
-        return dis;
+        return dataInputStream;
     }
 
     @Override
@@ -132,7 +132,7 @@
         if (pos < 0) {
             throw new FileSystemException("vfs.provider/random-access-invalid-position.error", Long.valueOf(pos));
         }
-        if (dis != null) {
+        if (dataInputStream != null) {
             close();
         }
 
