diff --git a/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools-sources.jar b/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools-sources.jar
index e1ccd7e..3b574b4 100644
--- a/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools-sources.jar
+++ b/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools-sources.jar
Binary files differ
diff --git a/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools.jar b/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools.jar
index edfbf7a..b2c142a 100644
--- a/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools.jar
+++ b/org.eclipse.virgo.ide.manifest.core/lib/org.eclipse.virgo.kernel.tools.jar
Binary files differ
diff --git a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/runtimes/Virgo37Provider.java b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/runtimes/Virgo37Provider.java
index 9b3a7fd..211f11f 100644
--- a/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/runtimes/Virgo37Provider.java
+++ b/org.eclipse.virgo.ide.runtime.core/src/org/eclipse/virgo/ide/runtime/internal/core/runtimes/Virgo37Provider.java
@@ -11,12 +11,20 @@
 
 package org.eclipse.virgo.ide.runtime.internal.core.runtimes;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.virgo.ide.runtime.core.IServerBehaviour;
 import org.eclipse.virgo.ide.runtime.core.IServerRuntimeProvider;
 import org.eclipse.virgo.ide.runtime.internal.core.DeploymentIdentity;
 import org.eclipse.virgo.ide.runtime.internal.core.command.IServerCommand;
 import org.eclipse.virgo.ide.runtime.internal.core.command.JmxServerDeployCommand;
+import org.eclipse.virgo.util.io.IOUtils;
 import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IRuntime;
+import org.osgi.framework.Version;
 
 /**
  * {@link IServerRuntimeProvider} for Virgo Server 3.7.0 and above.
@@ -32,13 +40,46 @@
     }
 
     @Override
+    public boolean isHandlerFor(IRuntime runtime) {
+        IPath libPath = runtime.getLocation().append("lib"); //$NON-NLS-1$
+        File libDir = libPath.toFile();
+        if (libDir.exists()) {
+            IPath versionFilePath = libPath.append(".version"); //$NON-NLS-1$
+            File versionFile = versionFilePath.toFile();
+            if (versionFile.exists()) {
+                String version = (String) readVersionFile(versionFile).get("virgo.server.version"); //$NON-NLS-1$
+                if (version != null) {
+                    Version ver = Version.parseVersion(version);
+                    return (ver.getMajor() == 3 && ver.getMinor() >= 7);
+                }
+            }
+            return false;
+        }
+        return false;
+    }
+
+    private Properties readVersionFile(File versionFile) {
+        Properties props = new Properties();
+        FileInputStream fis = null;
+        try {
+            fis = new FileInputStream(versionFile);
+            props.load(fis);
+        } catch (Exception e) {
+            // ignore
+        } finally {
+            IOUtils.closeQuietly(fis);
+        }
+        return props;
+    }
+
+    @Override
     protected String getServerProfileName() {
-        return "java7-server.profile";
+        return "java-server.profile"; //$NON-NLS-1$
     }
 
     @Override
     public String getSupportedVersions() {
-        return "3.7+";
+        return "3.7+"; //$NON-NLS-1$
     }
 
     /*
