diff --git a/src/it/maven-version/expected-M3.txt b/src/it/maven-version/expected-M3.txt
deleted file mode 100644
index 0c0c6d8..0000000
--- a/src/it/maven-version/expected-M3.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-org.apache.maven.its.dependency-tree:test:jar:1.0-SNAPSHOT
-+- org.apache.maven:maven-project:jar:2.0.6:compile
-|  +- org.apache.maven:maven-settings:jar:2.0.6:compile
-|  +- org.apache.maven:maven-model:jar:2.0.5:compile (version managed from 2.0.6)
-|  +- org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
-|  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
-|  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile
-|  +- org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
-|  +- org.codehaus.plexus:plexus-utils:jar:1.4.1:compile
-|  \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile
-|     +- junit:junit:jar:3.8.1:compile
-|     \- classworlds:classworlds:jar:1.1-alpha-2:compile
-\- org.apache.maven:maven-profile:jar:2.0.4:compile
diff --git a/src/it/maven-version/expected-M2.txt b/src/it/maven-version/expected.txt
similarity index 100%
rename from src/it/maven-version/expected-M2.txt
rename to src/it/maven-version/expected.txt
diff --git a/src/it/maven-version/pom.xml b/src/it/maven-version/pom.xml
index 55bf7ce..8ee74f0 100644
--- a/src/it/maven-version/pom.xml
+++ b/src/it/maven-version/pom.xml
@@ -34,7 +34,6 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <outputFile>target/tree-M2.txt</outputFile>
   </properties>
 
   <dependencyManagement>
@@ -74,7 +73,7 @@
           <artifactId>maven-dependency-plugin</artifactId>
           <version>2.6</version>
           <configuration>
-            <outputFile>${outputFile}</outputFile>
+            <outputFile>target/tree.txt</outputFile>
           </configuration>
           <dependencies>
             <dependency>
@@ -87,19 +86,4 @@
       </plugins>
     </pluginManagement>
   </build>
-
-  <profiles>
-    <profile>
-      <id>maven-3</id>
-      <activation>
-        <file>
-          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->
-          <exists>${basedir}</exists>
-        </file>
-      </activation>
-      <properties>
-        <outputFile>target/tree-M3.txt</outputFile>
-      </properties>
-    </profile>    
-  </profiles>
 </project>
diff --git a/src/it/maven-version/verify.bsh b/src/it/maven-version/verify.bsh
index 401c65f..8bad5d4 100644
--- a/src/it/maven-version/verify.bsh
+++ b/src/it/maven-version/verify.bsh
@@ -2,16 +2,8 @@
 
 import org.codehaus.plexus.util.*;
 
-File outputFile = new File( basedir, "target/tree-M2.txt" );
-File expectedFile = new File( basedir, "expected-M2.txt" );
-if ( ! outputFile.exists() )
-{
-  outputFile = new File( basedir, "target/tree-M3.txt" );
-  expectedFile = new File( basedir, "expected-M3.txt" );
-}
-
-String actual = FileUtils.fileRead( outputFile );
-String expected = FileUtils.fileRead( expectedFile );
+String actual = FileUtils.fileRead( new File( basedir, "target/tree.txt" ) );
+String expected = FileUtils.fileRead( new File( basedir, "expected.txt" ) );
 
 actual = actual.replaceAll( "[\n\r]+", "\n" );
 expected = expected.replaceAll( "[\n\r]+", "\n" );
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 e288f4d..30eec1e 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
@@ -75,12 +75,12 @@
                 (RepositorySystemSession) invoke( ProjectBuildingRequest.class, projectBuildingRequest,
                                                   "getRepositorySession" );
 
-            if ( Boolean.TRUE != ( (Boolean) session.getConfigProperties().get( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION ) ) )
+            /*if ( Boolean.TRUE != ( (Boolean) session.getConfigProperties().get( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION ) ) )
             {
                 DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
                 newSession.setConfigProperty( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, true );
                 session = newSession;
-            }
+            }*/
 
             DependencyResolutionRequest request =
                 new DefaultDependencyResolutionRequest();
@@ -138,8 +138,8 @@
     private DependencyNode buildDependencyNode( DependencyNode parent, org.eclipse.aether.graph.DependencyNode node,
                                                 Artifact artifact, ArtifactFilter filter )
     {
-        String premanagedVersion = DependencyManagerUtils.getPremanagedVersion( node );
-        String premanagedScope = DependencyManagerUtils.getPremanagedScope( node );
+        String premanagedVersion = null; //DependencyManagerUtils.getPremanagedVersion( node );
+        String premanagedScope = null; //DependencyManagerUtils.getPremanagedScope( node );
 
         DefaultDependencyNode current =
             new DefaultDependencyNode( parent, artifact, premanagedVersion, premanagedScope,
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 53f341e..b6f49e7 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
@@ -113,7 +113,7 @@
                                                 Artifact artifact, ArtifactFilter filter )
     {
         DefaultDependencyNode current =
-            new DefaultDependencyNode( parent, artifact, node.getPremanagedVersion(), node.getPremanagedScope(),
+            new DefaultDependencyNode( parent, artifact, null /*node.getPremanagedVersion()*/, null /*node.getPremanagedScope()*/,
                                        getVersionSelectedFromRange( node.getVersionConstraint() ) );
 
         List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
