diff --git a/pom.xml b/pom.xml
index c745a5e..6b8072e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,16 +26,19 @@
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.10</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.robolectric</groupId>
       <artifactId>robolectric</artifactId>
       <version>2.2</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>1.9.5</version>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 
diff --git a/src/main/java/com/android/volley/AuthFailureError.java b/src/main/java/com/android/volley/AuthFailureError.java
index 7bb2e15..87c811d 100644
--- a/src/main/java/com/android/volley/AuthFailureError.java
+++ b/src/main/java/com/android/volley/AuthFailureError.java
@@ -18,9 +18,6 @@
 
 import android.content.Intent;
 
-import com.android.volley.NetworkResponse;
-import com.android.volley.VolleyError;
-
 /**
  * Error indicating that there was an authentication failure when performing a Request.
  */
diff --git a/src/main/java/com/android/volley/NetworkError.java b/src/main/java/com/android/volley/NetworkError.java
index 42fbcc2..40b41c5 100644
--- a/src/main/java/com/android/volley/NetworkError.java
+++ b/src/main/java/com/android/volley/NetworkError.java
@@ -16,9 +16,6 @@
 
 package com.android.volley;
 
-import com.android.volley.NetworkResponse;
-import com.android.volley.VolleyError;
-
 /**
  * Indicates that there was a network error when performing a Volley request.
  */
diff --git a/src/main/java/com/android/volley/ParseError.java b/src/main/java/com/android/volley/ParseError.java
index a55da47..959d8fb 100644
--- a/src/main/java/com/android/volley/ParseError.java
+++ b/src/main/java/com/android/volley/ParseError.java
@@ -16,9 +16,6 @@
 
 package com.android.volley;
 
-import com.android.volley.NetworkResponse;
-import com.android.volley.VolleyError;
-
 /**
  * Indicates that the server's response could not be parsed.
  */
diff --git a/src/main/java/com/android/volley/ServerError.java b/src/main/java/com/android/volley/ServerError.java
index 97cb1c6..7b33c33 100644
--- a/src/main/java/com/android/volley/ServerError.java
+++ b/src/main/java/com/android/volley/ServerError.java
@@ -16,9 +16,6 @@
 
 package com.android.volley;
 
-import com.android.volley.NetworkResponse;
-import com.android.volley.VolleyError;
-
 /**
  * Indicates that the server responded with an error response.
  */
diff --git a/src/main/java/com/android/volley/VolleyLog.java b/src/main/java/com/android/volley/VolleyLog.java
index 6684690..ffe9eb8 100644
--- a/src/main/java/com/android/volley/VolleyLog.java
+++ b/src/main/java/com/android/volley/VolleyLog.java
@@ -23,7 +23,12 @@
 import java.util.List;
 import java.util.Locale;
 
-/** Logging helper class. */
+/**
+ * Logging helper class.
+ * <p/>
+ * to see Volley logs call:<br/>
+ * {@code <android-sdk>/platform-tools/adb shell setprop log.tag.Volley VERBOSE}
+ */
 public class VolleyLog {
     public static String TAG = "Volley";
 
diff --git a/src/main/java/com/android/volley/toolbox/ImageLoader.java b/src/main/java/com/android/volley/toolbox/ImageLoader.java
index 151e022..995bb48 100644
--- a/src/main/java/com/android/volley/toolbox/ImageLoader.java
+++ b/src/main/java/com/android/volley/toolbox/ImageLoader.java
@@ -91,7 +91,7 @@
      * The default implementation of ImageListener which handles basic functionality
      * of showing a default image until the network response is received, at which point
      * it will switch to either the actual image or the error image.
-     * @param imageView The imageView that the listener is associated with.
+     * @param view The imageView that the listener is associated with.
      * @param defaultImageResId Default image resource ID to use, or 0 if it doesn't exist.
      * @param errorImageResId Error image resource ID to use, or 0 if it doesn't exist.
      */
@@ -165,7 +165,6 @@
      * request is fulfilled.
      *
      * @param requestUrl The URL of the image to be loaded.
-     * @param defaultImage Optional default image to return until the actual image is loaded.
      */
     public ImageContainer get(String requestUrl, final ImageListener listener) {
         return get(requestUrl, listener, 0, 0);
@@ -441,7 +440,6 @@
      * Starts the runnable for batched delivery of responses if it is not already started.
      * @param cacheKey The cacheKey of the response being delivered.
      * @param request The BatchedImageRequest to be delivered.
-     * @param error The volley error associated with the request (if applicable).
      */
     private void batchResponse(String cacheKey, BatchedImageRequest request) {
         mBatchedResponses.put(cacheKey, request);
diff --git a/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java b/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
index 26f8e68..8bd98aa 100644
--- a/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
+++ b/src/test/java/com/android/volley/toolbox/NetworkImageViewTest.java
@@ -5,7 +5,6 @@
 import android.view.ViewGroup.LayoutParams;
 import android.widget.ImageView.ScaleType;
 
-import com.android.volley.Cache;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
