diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/ClassAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/ClassAnalyzer.java
index 6f8adca..0ba08df 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/ClassAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/ClassAnalyzer.java
@@ -30,16 +30,13 @@
  */
 public interface ClassAnalyzer
 {
-    /** Constant <code>ROLE="ClassAnalyzer.class.getName()"</code> */
-    @Deprecated
-    String ROLE = ClassAnalyzer.class.getName();
 
     /**
      * <p>analyze.</p>
      *
-     * @param url a {@link java.net.URL} object.
-     * @return a {@link java.util.Set} object.
-     * @throws java.io.IOException if any.
+     * @param url the JAR file or directory to analyze
+     * @return a {@link java.util.Set} object
+     * @throws java.io.IOException if any
      */
     Set<String> analyze( URL url )
         throws IOException;
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/DependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/DependencyAnalyzer.java
index 5ea73e1..e6a7fc0 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/DependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/DependencyAnalyzer.java
@@ -30,16 +30,13 @@
  */
 public interface DependencyAnalyzer
 {
-    /** Constant <code>ROLE="DependencyAnalyzer.class.getName()"</code> */
-    @Deprecated
-    String ROLE = DependencyAnalyzer.class.getName();
 
     /**
      * <p>analyze.</p>
      *
-     * @param url a {@link java.net.URL} object.
-     * @return a {@link java.util.Set} object.
-     * @throws java.io.IOException if any.
+     * @param url the JAR file or directory to analyze
+     * @return a {@link java.util.Set} object
+     * @throws java.io.IOException if any
      */
     Set<String> analyze( URL url )
         throws IOException;
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/ProjectDependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/ProjectDependencyAnalyzer.java
index 9b406d4..ca7f4b8 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/ProjectDependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/ProjectDependencyAnalyzer.java
@@ -27,22 +27,19 @@
  * <li>used and declared,</li>
  * <li>used but not declared,</li>
  * <li>not used but declared.</li>
+ * <li>used but declared in too broad a scope</li>
  * </ul>
  *
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  */
 public interface ProjectDependencyAnalyzer
 {
-    /** Constant <code>ROLE="ProjectDependencyAnalyzer.class.getName"{trunked}</code> */
-    @Deprecated
-    String ROLE = ProjectDependencyAnalyzer.class.getName();
-
     /**
      * <p>analyze.</p>
      *
-     * @param project a {@link org.apache.maven.project.MavenProject} object.
-     * @return a {@link org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis} object.
-     * @throws org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException if any.
+     * @param project a {@link org.apache.maven.project.MavenProject} object
+     * @return a {@link org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis} object
+     * @throws org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException if any
      */
     ProjectDependencyAnalysis analyze( MavenProject project )
         throws ProjectDependencyAnalyzerException;
diff --git a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
index 6f3b2dd..ffbe626 100644
--- a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
@@ -87,7 +87,7 @@
             System.out.println( "Local repository: " + localRepo );
         }
 
-        analyzer = (ProjectDependencyAnalyzer) lookup( ProjectDependencyAnalyzer.ROLE );
+        analyzer = (ProjectDependencyAnalyzer) lookup( ProjectDependencyAnalyzer.class.getName() );
     }
 
     @Test
