diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/AbstractScrPlugin.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/AbstractScrPlugin.java
deleted file mode 100644
index 763e910..0000000
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/AbstractScrPlugin.java
+++ /dev/null
@@ -1,52 +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.compendium;
-
-
-import org.apache.felix.scr.ScrService;
-import org.apache.felix.webconsole.internal.BaseManagementPlugin;
-import org.osgi.util.tracker.ServiceTracker;
-
-
-public class AbstractScrPlugin extends BaseManagementPlugin
-{
-
-    private ServiceTracker scrServiceTracker;
-
-
-    protected ScrService getScrService()
-    {
-        if ( scrServiceTracker == null )
-        {
-            try
-            {
-                scrServiceTracker = new ServiceTracker( getBundleContext(), ScrService.class.getName(), null );
-                scrServiceTracker.open();
-            }
-            catch ( Throwable t )
-            {
-                // missing ScrService class ??
-                return null;
-            }
-        }
-
-        return ( ScrService ) scrServiceTracker.getService();
-    }
-
-}
