diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundleAction.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundleAction.java
deleted file mode 100644
index 5cfb252..0000000
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundleAction.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.felix.webconsole.internal.core;
-
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.felix.webconsole.Action;
-import org.apache.felix.webconsole.internal.BaseManagementPlugin;
-
-
-abstract class BundleAction extends BaseManagementPlugin implements Action
-{
-
-    protected long getBundleId( HttpServletRequest request )
-    {
-        String bundleIdPar = request.getParameter( BundlesServlet.BUNDLE_ID );
-        if ( bundleIdPar != null )
-        {
-            try
-            {
-                return Long.parseLong( bundleIdPar );
-            }
-            catch ( NumberFormatException nfe )
-            {
-                // TODO: log
-            }
-        }
-
-        // no bundleId or wrong format
-        return -1;
-    }
-
-}
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
index cf28c0e..0778e33 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
@@ -28,7 +28,6 @@
 import org.apache.felix.bundlerepository.*;
 import org.apache.felix.webconsole.internal.BaseWebConsolePlugin;
 import org.apache.felix.webconsole.internal.Util;
-import org.apache.felix.webconsole.internal.obr.DeployerThread;
 import org.apache.felix.webconsole.internal.servlet.OsgiManager;
 import org.json.JSONException;
 import org.json.JSONWriter;
@@ -36,7 +35,7 @@
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.component.ComponentConstants;
 import org.osgi.service.log.LogService;
-import org.osgi.service.obr.*;
+import org.osgi.service.obr.RepositoryAdmin;
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
 import org.osgi.service.startlevel.StartLevel;
@@ -122,7 +121,7 @@
                 {
                     // bundle properties
 
-                    response.setContentType( "text/javascript" );
+                    response.setContentType( "application/json" );
                     response.setCharacterEncoding( "UTF-8" );
 
                     PrintWriter pw = response.getWriter();
@@ -267,20 +266,44 @@
         pathInfo = pathInfo.substring( pathInfo.lastIndexOf( '/' ) + 1 );
 
         // assume bundle Id
-        long bundleId;
         try
         {
-            bundleId = Long.parseLong( pathInfo );
+            final long bundleId = Long.parseLong( pathInfo );
+            if ( bundleId >= 0 )
+            {
+                return getBundleContext().getBundle( bundleId );
+            }
         }
         catch ( NumberFormatException nfe )
         {
-            bundleId = -1;
+            // check if this follows the pattern {symbolic-name}[:{version}]
+            final int pos = pathInfo.indexOf(':');
+            final String symbolicName;
+            final String version;
+            if ( pos == -1 ) {
+                symbolicName = pathInfo;
+                version = null;
+            } else {
+                symbolicName = pathInfo.substring(0, pos);
+                version = pathInfo.substring(pos+1);
+            }
+
+            // search
+            final Bundle[] bundles = getBundleContext().getBundles();
+            for(int i=0; i<bundles.length; i++)
+            {
+                final Bundle bundle = bundles[i];
+                // check symbolic name first
+                if ( symbolicName.equals(bundle.getSymbolicName()) )
+                {
+                    if ( version == null || version.equals(bundle.getHeaders().get(Constants.BUNDLE_VERSION)) )
+                    {
+                        return bundle;
+                    }
+                }
+            }
         }
 
-        if ( bundleId >= 0 )
-        {
-            return getBundleContext().getBundle( bundleId );
-        }
 
         return null;
     }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/InstallAction.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/InstallAction.java
index d2da770..d63039f 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/InstallAction.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/InstallAction.java
@@ -17,10 +17,7 @@
 package org.apache.felix.webconsole.internal.core;
 
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.util.Map;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
@@ -30,9 +27,9 @@
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
+import org.apache.felix.webconsole.Action;
+import org.apache.felix.webconsole.internal.BaseManagementPlugin;
+import org.osgi.framework.*;
 import org.osgi.service.log.LogService;
 import org.osgi.service.packageadmin.PackageAdmin;
 import org.osgi.service.startlevel.StartLevel;
@@ -41,7 +38,7 @@
 /**
  * The <code>InstallAction</code> TODO
  */
-public class InstallAction extends BundleAction
+public class InstallAction extends BaseManagementPlugin implements Action
 {
 
     public static final String NAME = "install";
@@ -196,7 +193,7 @@
                     }
                 }
             }
-            
+
             if ( updateBundle != null )
             {
 
@@ -273,7 +270,7 @@
                 {
                     bundle.start();
                 }
-                
+
                 return bundle;
             }
         };
