diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java
index 8f37c00394..e4c73e37f3 100644
--- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java
+++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/reports/ReportManager.java
@@ -10,6 +10,7 @@ import net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences;
 import net.sourceforge.pmd.renderers.CSVRenderer;
 import net.sourceforge.pmd.renderers.HTMLRenderer;
 import net.sourceforge.pmd.renderers.Renderer;
+import net.sourceforge.pmd.renderers.SummaryHTMLRenderer;
 import net.sourceforge.pmd.renderers.TextRenderer;
 import net.sourceforge.pmd.renderers.VBHTMLRenderer;
 import net.sourceforge.pmd.renderers.XMLRenderer;
@@ -36,6 +37,7 @@ public class ReportManager {
     	
     	return new Renderer[] {
     		new HTMLRenderer(props),
+    		new SummaryHTMLRenderer(props),
     		new CSVRenderer(props),
     		new XMLRenderer(props),
     		new TextRenderer(props),
diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java
index 1c3cca986d..92208dd169 100644
--- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java
+++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDView2.java
@@ -14,14 +14,18 @@ import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants;
 import net.sourceforge.pmd.eclipse.ui.nls.StringKeys;
 import net.sourceforge.pmd.util.StringUtil;
 
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.jface.viewers.TreeNodeContentProvider;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.GC;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
@@ -58,6 +62,7 @@ public class CPDView2 extends ViewPart implements IPropertyListener {
     private static final int SpanColumnWidth = 50;
     private static final int MAX_MATCHES = 100;
     private static final int xGap = 6;
+    private static final String TabEquivalent = "    ";	// tab char == 4 spaces
     public static final int SourceColumnIdx = 1;
     
     private static List<Match> asList(Iterator<Match> matchIter) {
@@ -86,7 +91,7 @@ public class CPDView2 extends ViewPart implements IPropertyListener {
     
     public static String[] sourceLinesFrom(Match match, boolean trimLeadingWhitespace) {
     	
-        final String text = match.getSourceCodeSlice().replaceAll("\t", "    ");
+        final String text = match.getSourceCodeSlice().replaceAll("\t", TabEquivalent);
         final StringTokenizer lines = new StringTokenizer(text, "\n");
         
         List<String> sourceLines = new ArrayList<String>();
@@ -167,7 +172,8 @@ public class CPDView2 extends ViewPart implements IPropertyListener {
         
         treeViewer.setContentProvider(contentProvider);
         treeViewer.setLabelProvider(labelProvider);
-
+        addDeleteListener(treeViewer.getControl());
+        
         createColumns(tree);
         
         CPDViewTooltipListener2 tooltipListener = new CPDViewTooltipListener2(this);
@@ -180,6 +186,24 @@ public class CPDView2 extends ViewPart implements IPropertyListener {
         packageColor = disp.getSystemColor(SWT.COLOR_GRAY);
     }
 
+	protected void addDeleteListener(Control control) {
+
+		control.addKeyListener(new KeyAdapter() {
+			public void keyPressed(KeyEvent ev) {
+				if (ev.character == SWT.DEL) {
+					removeSelectedItems();
+				}
+			}
+		});	
+	}
+    
+	// TODO fix - not deleting 'model' elements?
+	private void removeSelectedItems() {
+		IStructuredSelection selection = (IStructuredSelection)treeViewer.getSelection();
+		Object[] items = selection.toArray();
+		treeViewer.remove(items);
+	}
+	
     public int inColumn(Point point) {
     	
     	if (columnWidths == null) return -1;
diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java
index 4b5bbde39c..973afd6b8e 100644
--- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java
+++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/cpd2/CPDViewTooltipListener2.java
@@ -138,6 +138,7 @@ public class CPDViewTooltipListener2 implements Listener {
   		for (int i=0; i<names.length; i++) {
   			int rightEdge = colWidth - (cellWidth * i);  			
   			int[] widths = view.widthsFor(names[i]);
+  			if (widths == null) continue;
   			int classWidth = widths[1];
   			if (location.x > rightEdge-classWidth && 	// right of the start?
   				location.x < rightEdge)	{				// left of the end?