diff --git a/pom.xml b/pom.xml
index 789609d..8d4600e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,8 @@
 
   <properties>
     <mavenVersion>3.0</mavenVersion>
+    <maven.compiler.source>1.6</maven.compiler.source>
+    <maven.compiler.target>1.6</maven.compiler.target>
   </properties>
 
   <contributors>
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
index bfec7c2..63dc3f6 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
@@ -26,7 +26,7 @@
 import java.util.Collection;
 
 /**
- * Maven project dependency graph builder API, neutral against Maven 2 or Maven 3.
+ * Maven project dependency graph builder API, neutral against Maven 3.
  *
  * @author Hervé Boutemy
  * @since 2.0
@@ -36,21 +36,7 @@
     /**
      * Build the dependency graph.
      *
-     * @param project the project
-     * @param filter artifact filter (can be <code>null</code>)
-     * @return the dependency graph
-     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
-     * @deprecated instead use {@link #buildDependencyGraph(ProjectBuildingRequest, ArtifactFilter)}
-     */
-    @Deprecated
-    DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
-        throws DependencyGraphBuilderException;
-
-    
-    /**
-     * Build the dependency graph.
-     *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @return the dependency graph
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
@@ -61,32 +47,12 @@
     /**
      * Build the dependency graph, with a hack to include dependencies contained in the reactor projects
      * but that are not yet compiled, which is the minimum prerequisite for Maven core's
-     * ReactorReader to find them. Notice that this hack hasn't been done for Maven 2.
+     * ReactorReader to find them. 
      * <p>Notice: If Maven core did collect instead of resolving dependencies (ie did not try to get the
      * artifacts but only the poms), probably this hack wouldn't be necessary even for people requiring
      * the dependency graph before compiling. TODO: for Maven 3, use Aether to collect dependencies.</p>
      *
-     * @param project the project
-     * @param filter artifact filter (can be <code>null</code>)
-     * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
-     * @return the dependency graph
-     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
-     * @deprecated instead use {@link #buildDependencyGraph(ProjectBuildingRequest, ArtifactFilter, Collection)}
-     */
-    @Deprecated
-    DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                         Collection<MavenProject> reactorProjects )
-        throws DependencyGraphBuilderException;
-    
-    /**
-     * Build the dependency graph, with a hack to include dependencies contained in the reactor projects
-     * but that are not yet compiled, which is the minimum prerequisite for Maven core's
-     * ReactorReader to find them. Notice that this hack hasn't been done for Maven 2.
-     * <p>Notice: If Maven core did collect instead of resolving dependencies (ie did not try to get the
-     * artifacts but only the poms), probably this hack wouldn't be necessary even for people requiring
-     * the dependency graph before compiling. TODO: for Maven 3, use Aether to collect dependencies.</p>
-     *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
      * @return the dependency graph
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/filter/AncestorOrSelfDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/graph/filter/AncestorOrSelfDependencyNodeFilter.java
index d902ca3..f26c4e3 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/filter/AncestorOrSelfDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/filter/AncestorOrSelfDependencyNodeFilter.java
@@ -64,6 +64,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean accept( DependencyNode node )
     {
         for ( DependencyNode descendantNode : descendantNodes )
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/filter/AndDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/graph/filter/AndDependencyNodeFilter.java
index 4c8008a..3e2392c 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/filter/AndDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/filter/AndDependencyNodeFilter.java
@@ -70,6 +70,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean accept( DependencyNode node )
     {
         for ( DependencyNodeFilter filter : filters )
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/filter/ArtifactDependencyNodeFilter.java b/src/main/java/org/apache/maven/shared/dependency/graph/filter/ArtifactDependencyNodeFilter.java
index a5488df..829f625 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/filter/ArtifactDependencyNodeFilter.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/filter/ArtifactDependencyNodeFilter.java
@@ -57,6 +57,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean accept( DependencyNode node )
     {
         Artifact artifact = node.getArtifact();
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
index 0398ff8..99acdee 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
@@ -66,6 +66,7 @@
         return buildDependencyGraph( project.getProjectBuildingRequest(), filter, null );
     }
     
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
@@ -88,6 +89,7 @@
         return buildDependencyGraph( project.getProjectBuildingRequest(), filter, reactorProjects );
     }
     
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
                                                 Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
@@ -138,6 +140,7 @@
      * @param context   Plexus context to inject.
      * @throws ContextException if the PlexusContainer could not be located.
      */
+    @Override
     public void contextualize( Context context )
         throws ContextException
     {
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
index 4e5a8cc..7fbe0c8 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
@@ -68,6 +68,7 @@
      * @return the visitor result of ending the visit to this node
      * @since 1.1
      */
+    @Override
     public boolean accept( DependencyNodeVisitor visitor )
     {
         if ( visitor.visit( this ) )
@@ -87,6 +88,7 @@
     /**
      * @return Artifact for this DependencyNode.
      */
+    @Override
     public Artifact getArtifact()
     {
         return artifact;
@@ -104,6 +106,7 @@
     /**
      * @return List of child nodes for this DependencyNode.
      */
+    @Override
     public List<DependencyNode> getChildren()
     {
         return children;
@@ -112,21 +115,25 @@
     /**
      * @return Parent of this DependencyNode.
      */
+    @Override
     public DependencyNode getParent()
     {
         return parent;
     }
 
+    @Override
     public String getPremanagedVersion()
     {
         return premanagedVersion;
     }
 
+    @Override
     public String getPremanagedScope()
     {
         return premanagedScope;
     }
 
+    @Override
     public String getVersionConstraint()
     {
         return versionConstraint;
@@ -135,6 +142,7 @@
     /**
      * @return Stringified representation of this DependencyNode.
      */
+    @Override
     public String toNodeString()
     {
         StringBuffer buffer = new StringBuffer();
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
index 8c77b00..400b5b9 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
@@ -68,17 +68,12 @@
     /**
      * Builds the dependency graph for Maven 3.1+.
      *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @return DependencyNode containing the dependency graph.
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
-    public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
-        throws DependencyGraphBuilderException
-    {
-        return buildDependencyGraph( project, filter, null );
-    }
-    
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
@@ -89,22 +84,13 @@
      * Builds the dependency graph for Maven 3.1+, eventually hacking for collecting projects from
      * reactor not yet built.
      *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
      * @return DependencyNode containing the dependency graph.
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
-    public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Collection<MavenProject> reactorProjects )
-        throws DependencyGraphBuilderException
-    {
-        ProjectBuildingRequest projectBuildingRequest =
-            (ProjectBuildingRequest) Invoker.invoke( project, "getProjectBuildingRequest" );
-
-        return buildDependencyGraph( projectBuildingRequest, filter, reactorProjects );
-    }
-    
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest projectBuildingRequest, ArtifactFilter filter,
                                                 Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
index 72d7df3..be78e7d 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
@@ -68,17 +68,12 @@
     /**
      * Builds the dependency graph for Maven 3.
      *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @return DependencyNode containing the dependency graph.
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
-    public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
-        throws DependencyGraphBuilderException
-    {
-        return buildDependencyGraph( project, filter, null );
-    }
-    
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
@@ -89,23 +84,13 @@
      * Builds the dependency graph for Maven 3, eventually hacking for collecting projects from
      * reactor not yet built.
      *
-     * @param project the project
+     * @param buildingRequest the buildingRequest
      * @param filter artifact filter (can be <code>null</code>)
      * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
      * @return DependencyNode containing the dependency graph.
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
      */
-    public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
-                                                Collection<MavenProject> reactorProjects )
-        throws DependencyGraphBuilderException
-    {
-        // this method doesn't exist on all MavenProject versions and also has been deprecated.
-        ProjectBuildingRequest projectBuildingRequest =
-            (ProjectBuildingRequest) Invoker.invoke( project, "getProjectBuildingRequest" );
-
-        return buildDependencyGraph( projectBuildingRequest, filter, reactorProjects );
-    }
-
+    @Override
     public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
                                                 Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
index 700a2dc..775e0f2 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/BuildingDependencyNodeVisitor.java
@@ -80,6 +80,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean visit( DependencyNode node )
     {
         // clone the node
@@ -107,6 +108,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean endVisit( DependencyNode node )
     {
         parentNodes.pop();
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/CollectingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/CollectingDependencyNodeVisitor.java
index 0d4b515..3c4d217 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/CollectingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/CollectingDependencyNodeVisitor.java
@@ -57,6 +57,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean visit( DependencyNode node )
     {
         // collect node
@@ -68,6 +69,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean endVisit( DependencyNode node )
     {
         return true;
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/FilteringDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/FilteringDependencyNodeVisitor.java
index 3238a14..6c11fa6 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/FilteringDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/FilteringDependencyNodeVisitor.java
@@ -64,6 +64,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean visit( DependencyNode node )
     {
         boolean visit;
@@ -83,6 +84,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean endVisit( DependencyNode node )
     {
         boolean visit;
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/SerializingDependencyNodeVisitor.java b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/SerializingDependencyNodeVisitor.java
index ea4ed2f..ac184fa 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/traversal/SerializingDependencyNodeVisitor.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/traversal/SerializingDependencyNodeVisitor.java
@@ -142,6 +142,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean visit( DependencyNode node )
     {
         indent( node );
@@ -156,6 +157,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean endVisit( DependencyNode node )
     {
         depth--;
