diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
index 4ab86f0..7f4823d 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight.js
@@ -201,6 +201,27 @@
   }
 }
 
+function updateBaloon2(curId, message) {
+  if(messageDiv != null){
+	messageDiv.style.visibility = "visible";
+	messageDiv.innerHTML = "<b>&nbsp";
+	messageDiv.innerHTML += id2time[curId];
+	messageDiv.innerHTML += "</b> seconds from top.";
+
+	if (id2time[curId] > 90) {
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-sad.gif'>";		
+
+				
+	} else if (id2time[curId] > 30) { 
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-usual.gif'>";
+	} else {
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-smile.gif'>";
+	}
+	messageDiv.innerHTML += "<br><b>" + message + "</b>";
+
+  }
+}
+
 function stopHandler(){
 
   var e = window.event;
@@ -385,8 +406,8 @@
 	  }
 	  i=i+1;
 			
-	  if(isAlert==true && idNumber>2000){
-		alert("This page contains too many intra-page links.\nIn this page, aDesigner can visualize some of intra-page links by arrow.");
+	  if(isAlert==true && idNumber>3000){
+		alert("This page contains too many intra-page links.\nIn this page, ACTF can visualize some of intra-page links by arrow.");
 		break;
 	  }
 
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight_moz.js b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight_moz.js
index f7aa402..203367e 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight_moz.js
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/vizResources/scripts/highlight_moz.js
@@ -254,6 +254,27 @@
 	}
 }
 
+function updateBaloon2(curId, message) {
+  if(messageDiv != null){
+	messageDiv.style.visibility = "visible";
+	messageDiv.innerHTML = "<b>&nbsp";
+	messageDiv.innerHTML += id2time[curId];
+	messageDiv.innerHTML += "</b> seconds from top.";
+
+	if (id2time[curId] > 90) {
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-sad.gif'>";		
+
+				
+	} else if (id2time[curId] > 30) { 
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-usual.gif'>";
+	} else {
+	  messageDiv.innerHTML += "<img src='" + baseUrl +acc_imageDir+ "face-smile.gif'>";
+	}
+	messageDiv.innerHTML += "<br><b>" + message + "</b>";
+
+  }
+}
+
 function stopHandler(e){
 
 	//var e = window.event;
@@ -441,8 +462,8 @@
 			}
 			i=i+1;
 			
-			if(isAlert==true && idNumber>2000){
-				alert("This page contains too many intra-page links.\nIn this page, aDesigner can visualize some of intra-page links by arrow.");
+			if(isAlert==true && idNumber>3000){
+				alert("This page contains too many intra-page links.\nIn this page, ACTF can visualize some of intra-page links by arrow.");
 				break;
 			}
 
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java
index fdd9471..69d9d5a 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/CopyAction.java
@@ -67,11 +67,12 @@
 				.getSelection()).toList();
 
 		ReportUtil reportUtil = new ReportUtil();
+		reportUtil.setMode(ReportUtil.TAB);
 		StringBuffer tmpSB = new StringBuffer(reportUtil.getFirstLine()
 				+ ReportUtil.LINE_SEP);
 
 		for (IProblemItem tmpItem : targetList) {
-			tmpSB.append(reportUtil.getCSV(tmpItem) + ReportUtil.LINE_SEP);
+			tmpSB.append(reportUtil.toString(tmpItem) + ReportUtil.LINE_SEP);
 		}
 
 		Clipboard clipboard = new Clipboard(tableViewer.getControl()
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
index 2329506..fba76b5 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/GuidelineSubMenu.java
@@ -28,7 +28,7 @@
 
 public class GuidelineSubMenu extends MenuManager {
 
-	private ResultTableViewer _resultTableViewer;
+//	private ResultTableViewer _resultTableViewer;
 
 	private TableViewer _tableViewer;
 
@@ -37,7 +37,7 @@
 	public GuidelineSubMenu(ResultTableViewer resultTableViewer) {
 		super(Messages.ProblemTable_View_Guideline_16);
 
-		this._resultTableViewer = resultTableViewer;
+//		this._resultTableViewer = resultTableViewer;
 		this._tableViewer = resultTableViewer.getTableViewer();
 
 		this._tableViewer
diff --git a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java
index 6994242..18b132c 100644
--- a/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java
+++ b/plugins/org.eclipse.actf.visualization.ui.report/src/org/eclipse/actf/visualization/internal/ui/report/action/TechniquesSubMenu.java
@@ -31,7 +31,7 @@
 
 public class TechniquesSubMenu extends MenuManager {
 
-	private ResultTableViewer _resultTableViewer;
+//	private ResultTableViewer _resultTableViewer;
 
 	private TableViewer _tableViewer;
 
@@ -40,7 +40,7 @@
 	public TechniquesSubMenu(ResultTableViewer resultTableViewer) {
 		super(Messages.ViewTechniques);
 
-		this._resultTableViewer = resultTableViewer;
+//		this._resultTableViewer = resultTableViewer;
 		this._tableViewer = resultTableViewer.getTableViewer();
 
 		this._tableViewer
