diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
index 42c21f8..343702b 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/VisualizeEngine.java
@@ -187,6 +187,7 @@
 
 	private void cleanupPacketCollection(IPacketCollection pc) {
 		// remove text in noscript tag
+		// remove template (temp code (remove after IE supports template tag)
 		if (pc != null) {
 			int size = pc.size();
 			for (int i = size - 1; i >= 0; i--) {
@@ -194,7 +195,8 @@
 
 				Node tmpNode = p.getNode();
 				while (tmpNode != null) {
-					if (tmpNode.getNodeName().equals("noscript")) { //$NON-NLS-1$
+					String name = tmpNode.getNodeName();
+					if ("noscript".equals(name)||"template".equals(name)) { //$NON-NLS-1$
 						pc.remove(i);
 						break;
 					}
@@ -205,7 +207,6 @@
 	}
 
 	private void replaceMathML_SVG_PacketCollection(IPacketCollection pc) {
-		// remove text in noscript tag
 		if (pc != null) {
 			int size = pc.size();
 			for (int i = size - 1; i >= 0; i--) {
@@ -417,28 +418,31 @@
 			div.setAttribute("comment", target.getAttribute("comment"));
 			div.setAttribute("id", target.getAttribute("id"));
 
-			StringBuffer tmpSB = new StringBuffer();
-			tmpSB.append("[" + message);
+			if (message != null) {
+				StringBuffer tmpSB = new StringBuffer();
+				tmpSB.append("[" + message);
 
-			for (int j = 0; j < childTags.length; j++) {
-				NodeList nl2 = target.getElementsByTagName(childTags[j]);
-				for (int k = 0; k < nl2.getLength(); k++) {
-					Node tmpN = nl2.item(0).getFirstChild();
-					String tmpS = "";
-					if (tmpN != null) {
-						tmpS = HtmlTagUtil.getTextDescendant(tmpN);
-					}
-					if (tmpS.length() > 0) {
-						tmpSB.append(" " + childTags[j] + ": \"" + tmpS+"\"");
-						break;
+				for (int j = 0; j < childTags.length; j++) {
+					NodeList nl2 = target.getElementsByTagName(childTags[j]);
+					for (int k = 0; k < nl2.getLength(); k++) {
+						Node tmpN = nl2.item(0).getFirstChild();
+						String tmpS = "";
+						if (tmpN != null) {
+							tmpS = HtmlTagUtil.getTextDescendant(tmpN);
+						}
+						if (tmpS.length() > 0) {
+							tmpSB.append(" " + childTags[j] + ": \"" + tmpS + "\"");
+							break;
+						}
 					}
 				}
+				tmpSB.append("]");
+
+				// remove other tags and attributes
+
+				div.appendChild(doc.createTextNode(tmpSB.toString()));
 			}
-			tmpSB.append("]");
 
-			// remove other tags and attributes
-
-			div.appendChild(doc.createTextNode(tmpSB.toString()));
 			Node parent = target.getParentNode();
 			parent.insertBefore(div, target);
 			mapData.addReplacedNodeMapping(target, div);
@@ -534,6 +538,9 @@
 		replaceElement(doc, "math", new String[0], "MathML");
 		replaceElement(doc, "svg", new String[] { "title", "desc" }, "SVG");
 
+		// template (temp code (remove after IE supports template tag)
+		replaceElement(doc, "template", new String[0], null);
+
 		// image button
 		nl = doc.getElementsByTagName("input");
 		size = nl.getLength();
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
index 7abe3b0..87a166a 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/NodeInfoCreator.java
@@ -227,6 +227,9 @@
 					} else if (nodeName.equals("label")) {
 						info.setLabel(true);
 						info.appendComment("Label for '" + ((Element) curNode).getAttribute("for") + "'. ");
+					} else if (nodeName.contains("caption")){
+						info.setCaption(true);
+						info.appendComment(curNode.getNodeName());
 					}
 
 					if (nodeName.equals("body")) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationNodeInfo.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationNodeInfo.java
index 0d2debc..95c4b35 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationNodeInfo.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizationNodeInfo.java
@@ -49,6 +49,8 @@
     private boolean isHeading = false;
     
     private boolean isLandmark = false; //for html5
+    
+    private boolean isCaption = false; //caption/figcaption
 
 	private boolean tableHeader = false;
 
@@ -333,12 +335,21 @@
     }
 
     /**
-     * @return
+     * Returns true if the node is landmark
+     * @return boolean
      */
     public boolean isLandmark() {
 		return isLandmark;
 	}
 
+	public boolean isCaption() {
+		return isCaption;
+	}
+
+	public void setCaption(boolean isCaption) {
+		this.isCaption = isCaption;
+	}
+
 	/**
 	 * @param isLandmark
 	 */
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
index dfa5d30..13b8d3e 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/internal/engines/blind/html/util/VisualizeColorUtil.java
@@ -136,20 +136,28 @@
 				continue;
 			}
 
+			String headingRGB = getRGBString(param.headingTagsColor, "#33CCFF");
+			String thRGB = getRGBString(param.tableHeaderColor, "#99FF00");
+			String labelRGB = getRGBString(param.labelTagsColor, "#FFFF00");
+			String inputRGB = getRGBString(param.inputTagsColor, "#FF9900");
+			String captionRGB = getRGBString(param.captionColor, "#FFFF80");
+
 			if (param.bColorizeTags
-					&& (info.isHeading() | info.isTableHeader() | info.isLabel() | info.isIdRequiredInput())) {
+					&& (info.isHeading() | info.isTableHeader() | info.isLabel() | info.isIdRequiredInput() | info.isCaption())) {
 				if (info.isHeading()) {
-					strRGB = getRGBString(param.headingTagsColor, "#33CCFF");
+					strRGB = headingRGB;
+				} else if (info.isTableHeader()) {
+					strRGB = thRGB;
+				} else if (info.isLabel()) {
+					strRGB = labelRGB;
+				} else if (info.isIdRequiredInput()) {
+					strRGB = inputRGB;
+				} else if (info.isCaption()){
+					strRGB = captionRGB;
 				}
-				if (info.isTableHeader()) {
-					strRGB = getRGBString(param.tableHeaderColor, "#99FF00");
-				}
-				if (info.isLabel()) {
-					strRGB = getRGBString(param.labelTagsColor, "#FFFF00");
-				}
-				if (info.isIdRequiredInput()) {
-					strRGB = getRGBString(param.inputTagsColor, "#FF9900");
-				}
+				
+				//TBD caption
+				
 				el.setAttribute("style", "color: black; background-image: none; background-color:" + strRGB);// +
 				// "}");
 				// } else if (info.getWords() > 0) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/config/altText.properties b/plugins/org.eclipse.actf.visualization.engines.blind/config/altText.properties
index 5e63505..eb16f78 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/config/altText.properties
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/config/altText.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
+# Copyright (c) 2007, 2016 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -36,6 +36,7 @@
 blindViz.inappropriateAlt_21 = icon
 blindViz.inappropriateAlt_22 = button
 blindViz.inappropriateAlt_23 = \u30dc\u30bf\u30f3
+blindViz.inappropriateAlt_24 = alt
 # END NON-TRANSLATABLE
 
 #
@@ -67,4 +68,5 @@
 blindViz.possible_inappAlt_21 =\u5199\u771f
 blindViz.possible_inappAlt_22 =\u30d0\u30ca\u30fc
 blindViz.possible_inappAlt_23 =\u30a2\u30a4\u30b3\u30f3
+blindViz.possible_inappAlt_24 =\u80cc\u666f
 # END NON-TRANSLATABLE
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
index c5cafdc..679c38e 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
+# Copyright (c) 2006, 2016 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -67,6 +67,7 @@
 DialogSettingBlind_Input_tags_22 = Input tags:
 DialogSettingBlind_Label_tags_23 = Label tags:
 DialogSettingBlind_Tabel_border_24 = Tabel border:
+DialogSettingBlind_Caption_tags_25 = Caption tags:
 #
 #
 #
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
index 444da44..eed31e1 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/messages_ja.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2006, 2008 IBM Corporation and others.
+# Copyright (c) 2006, 2016 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -62,11 +62,12 @@
 DialogSettingBlind_Layout_mode_9 = \u30ec\u30a4\u30a2\u30a6\u30c8\u4fdd\u5b58\u30e2\u30fc\u30c9
 DialogSettingBlind_Maximum_time_17 = \u8a31\u5bb9\u6700\u5927\u5230\u9054\u6642\u9593:
 DialogSettingBlind_Color_for_maximum_time_19 = \u8a31\u5bb9\u6700\u5927\u5230\u9054\u6642\u9593\u306e\u8272:
-DialogSettingBlind_Table_headers_20 = \u30c6\u30fc\u30d6\u30eb\u30d8\u30c3\u30c0\u30bf\u30b0 (TH):
-DialogSettingBlind_Heading_tags_21 = \u898b\u51fa\u3057\u30bf\u30b0 (H1,H2...):
-DialogSettingBlind_Input_tags_22 = \u5165\u529b\u30bf\u30b0 (Input):
-DialogSettingBlind_Label_tags_23 = \u30e9\u30d9\u30eb\u30bf\u30b0 (Label):
+DialogSettingBlind_Table_headers_20 = \u30c6\u30fc\u30d6\u30eb\u30d8\u30c3\u30c0\u30bf\u30b0 (th):
+DialogSettingBlind_Heading_tags_21 = \u898b\u51fa\u3057\u30bf\u30b0 (h1,h2...):
+DialogSettingBlind_Input_tags_22 = \u5165\u529b\u30bf\u30b0 (input):
+DialogSettingBlind_Label_tags_23 = \u30e9\u30d9\u30eb\u30bf\u30b0 (label):
 DialogSettingBlind_Tabel_border_24 = \u30c6\u30fc\u30d6\u30eb\u306e\u5883\u754c:
+DialogSettingBlind_Caption_tags_25 = \u30ad\u30e3\u30d7\u30b7\u30e7\u30f3(caption, figcaption):
 #
 #
 #
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ParamBlind.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ParamBlind.java
index 342ad3d..97082c9 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ParamBlind.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ParamBlind.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and Others
+ * Copyright (c) 2004, 2016 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -59,6 +59,8 @@
 
 	public RGB tableBorderColor;
 
+	public RGB captionColor;
+
 	/**
 	 * Get instance of {@link ParamBlind}
 	 * 
@@ -80,33 +82,24 @@
 	}
 
 	private static void setValues(ParamBlind pb) {
-		IPreferenceStore store = BlindVizEnginePlugin.getDefault()
-				.getPreferenceStore();
+		IPreferenceStore store = BlindVizEnginePlugin.getDefault().getPreferenceStore();
 
-		if (store.getDefaultString(IBlindPreferenceConstants.BLIND_LANG)
-				.equals(IBlindPreferenceConstants.LANG_JA)) {
+		if (store.getDefaultString(IBlindPreferenceConstants.BLIND_LANG).equals(IBlindPreferenceConstants.LANG_JA)) {
 			pb.iLanguage = JP;
 		} else {
 			pb.iLanguage = EN;
 		}
 
-		pb.visualizeMode = store
-				.getString(IBlindPreferenceConstants.BLIND_MODE);
+		pb.visualizeMode = store.getString(IBlindPreferenceConstants.BLIND_MODE);
 
-		pb.iMaxTime = store
-				.getInt(IBlindPreferenceConstants.BLIND_MAX_TIME_SECOND);
-		pb.maxTimeColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_MAX_TIME_COLOR);
-		pb.tableHeaderColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_TABLE_HEADER_COLOR);
-		pb.headingTagsColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_HEADING_TAGS_COLOR);
-		pb.inputTagsColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_INPUT_TAGS_COLOR);
-		pb.labelTagsColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_LABEL_TAGS_COLOR);
-		pb.tableBorderColor = PreferenceConverter.getColor(store,
-				IBlindPreferenceConstants.BLIND_TABLE_BORDER_COLOR);
+		pb.iMaxTime = store.getInt(IBlindPreferenceConstants.BLIND_MAX_TIME_SECOND);
+		pb.maxTimeColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_MAX_TIME_COLOR);
+		pb.tableHeaderColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_TABLE_HEADER_COLOR);
+		pb.headingTagsColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_HEADING_TAGS_COLOR);
+		pb.inputTagsColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_INPUT_TAGS_COLOR);
+		pb.labelTagsColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_LABEL_TAGS_COLOR);
+		pb.tableBorderColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_TABLE_BORDER_COLOR);
+		pb.captionColor = PreferenceConverter.getColor(store, IBlindPreferenceConstants.BLIND_CAPTION_COLOR);
 
 	}
 
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
index ce6790d..5b8c936 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/BlindPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and Others
+ * Copyright (c) 2006, 2016 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,13 +29,11 @@
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
-
-public class BlindPreferencePage extends GroupFieldEditorPreferencePage
-		implements IWorkbenchPreferencePage {
+public class BlindPreferencePage extends GroupFieldEditorPreferencePage implements IWorkbenchPreferencePage {
 
 	public static final String ID = BlindPreferencePage.class.getName();
 
-//	private RadioGroupFieldEditor modeRadio;
+	// private RadioGroupFieldEditor modeRadio;
 
 	private Group visualizationSetting;
 
@@ -61,18 +59,14 @@
 
 	private void createLanguagePart(Composite parent) {
 
-		addField(new RadioGroupFieldEditor(
-				IBlindPreferenceConstants.BLIND_LANG, Messages.DialogSettingBlind_Language_4, 1,
-				new String[][] {
-						{ Messages.DialogSettingBlind_English_15,
-								IBlindPreferenceConstants.LANG_EN },
-						{ Messages.DialogSettingBlind_Japanese_16,
-								IBlindPreferenceConstants.LANG_JA }
-								//TODO
+		addField(new RadioGroupFieldEditor(IBlindPreferenceConstants.BLIND_LANG, Messages.DialogSettingBlind_Language_4,
+				1, new String[][] { { Messages.DialogSettingBlind_English_15, IBlindPreferenceConstants.LANG_EN },
+						{ Messages.DialogSettingBlind_Japanese_16, IBlindPreferenceConstants.LANG_JA }
+				// TODO
 				// ,
 				// { Messages.DialogSettingBlind_SimpliedChinese_17,
 				// IBlindPreferenceConstants.LANG_ZH }
-								}, parent));
+		}, parent));
 	}
 
 	private void editNgwordWrongtxt() {
@@ -84,54 +78,43 @@
 
 		Composite parent = getFieldEditorParent();
 
-//		modeRadio = new RadioGroupFieldEditor(
-//				IBlindPreferenceConstants.BLIND_MODE,
-//				Messages.DialogSettingBlind_Visualization_mode_3,
-//				1,
-//				new String[][] {
-//						{
-//								Messages.DialogSettingBlind_Layout_mode_9,
-//								IBlindPreferenceConstants.BLIND_LAYOUT_MODE },
-//						{
-//								Messages.DialogSettingBlind_Voice_browser_output_mode_8,
-//								IBlindPreferenceConstants.BLIND_BROWSER_MODE } },
-//				parent);
-//
-//		addField(modeRadio);
+		// modeRadio = new RadioGroupFieldEditor(
+		// IBlindPreferenceConstants.BLIND_MODE,
+		// Messages.DialogSettingBlind_Visualization_mode_3,
+		// 1,
+		// new String[][] {
+		// {
+		// Messages.DialogSettingBlind_Layout_mode_9,
+		// IBlindPreferenceConstants.BLIND_LAYOUT_MODE },
+		// {
+		// Messages.DialogSettingBlind_Voice_browser_output_mode_8,
+		// IBlindPreferenceConstants.BLIND_BROWSER_MODE } },
+		// parent);
+		//
+		// addField(modeRadio);
 
 		visualizationSetting = createFieldGroup(Messages.DialogSettingBlind_LayoutModeSetting);
 
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_MAX_TIME_COLOR,
-				Messages.DialogSettingBlind_Color_for_maximum_time_19,
-				visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_MAX_TIME_COLOR,
+				Messages.DialogSettingBlind_Color_for_maximum_time_19, visualizationSetting));
 		ScaleFieldEditorWithValue maxTime = new ScaleFieldEditorWithValue(
-				IBlindPreferenceConstants.BLIND_MAX_TIME_SECOND,
-				Messages.DialogSettingBlind_Maximum_time_17,
+				IBlindPreferenceConstants.BLIND_MAX_TIME_SECOND, Messages.DialogSettingBlind_Maximum_time_17,
 				visualizationSetting, 30, 180, 5, 30);
 		addField(maxTime);
 
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_TABLE_BORDER_COLOR,
-				Messages.DialogSettingBlind_Tabel_border_24,
-				visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_TABLE_BORDER_COLOR,
+				Messages.DialogSettingBlind_Tabel_border_24, visualizationSetting));
 
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_HEADING_TAGS_COLOR,
-				Messages.DialogSettingBlind_Heading_tags_21,
-				visualizationSetting));
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_TABLE_HEADER_COLOR,
-				Messages.DialogSettingBlind_Table_headers_20,
-				visualizationSetting));
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_INPUT_TAGS_COLOR,
-				Messages.DialogSettingBlind_Input_tags_22,
-				visualizationSetting));
-		addField(new ColorFieldEditor(
-				IBlindPreferenceConstants.BLIND_LABEL_TAGS_COLOR,
-				Messages.DialogSettingBlind_Label_tags_23,
-				visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_HEADING_TAGS_COLOR,
+				Messages.DialogSettingBlind_Heading_tags_21, visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_TABLE_HEADER_COLOR,
+				Messages.DialogSettingBlind_Table_headers_20, visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_INPUT_TAGS_COLOR,
+				Messages.DialogSettingBlind_Input_tags_22, visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_LABEL_TAGS_COLOR,
+				Messages.DialogSettingBlind_Label_tags_23, visualizationSetting));
+		addField(new ColorFieldEditor(IBlindPreferenceConstants.BLIND_CAPTION_COLOR,
+				Messages.DialogSettingBlind_Caption_tags_25, visualizationSetting));
 
 		createInappropriateAltPart(parent);
 
@@ -141,8 +124,7 @@
 		}
 
 		boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
-				.equals(getPreferenceStore().getString(
-						IBlindPreferenceConstants.BLIND_MODE));
+				.equals(getPreferenceStore().getString(IBlindPreferenceConstants.BLIND_MODE));
 		visualizationSetting.setEnabled(isLayoutMode);
 		visualizationSetting.setVisible(isLayoutMode);
 
@@ -153,25 +135,24 @@
 		super.performDefaults();
 
 		boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
-				.equals(getPreferenceStore().getString(
-						IBlindPreferenceConstants.BLIND_MODE));
+				.equals(getPreferenceStore().getString(IBlindPreferenceConstants.BLIND_MODE));
 		visualizationSetting.setEnabled(isLayoutMode);
 		visualizationSetting.setVisible(isLayoutMode);
 	}
 
-//	@Override
-//	public void propertyChange(PropertyChangeEvent event) {
-//		super.propertyChange(event);
-//
-//		if (event.getSource() == modeRadio) {
-//			if (!event.getOldValue().equals(event.getNewValue())) {
-//				boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
-//						.equals(event.getNewValue());
-//				visualizationSetting.setEnabled(isLayoutMode);
-//				visualizationSetting.setVisible(isLayoutMode);
-//			}
-//		}
-//	}
+	// @Override
+	// public void propertyChange(PropertyChangeEvent event) {
+	// super.propertyChange(event);
+	//
+	// if (event.getSource() == modeRadio) {
+	// if (!event.getOldValue().equals(event.getNewValue())) {
+	// boolean isLayoutMode = IBlindPreferenceConstants.BLIND_LAYOUT_MODE
+	// .equals(event.getNewValue());
+	// visualizationSetting.setEnabled(isLayoutMode);
+	// visualizationSetting.setVisible(isLayoutMode);
+	// }
+	// }
+	// }
 
 	@Override
 	public boolean performOk() {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/IBlindPreferenceConstants.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/IBlindPreferenceConstants.java
index aad989b..7f0a869 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/IBlindPreferenceConstants.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/IBlindPreferenceConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
+ * Copyright (c) 2007, 2016 IBM Corporation and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -45,5 +45,7 @@
     String BLIND_LABEL_TAGS_COLOR = "ADesigner.blind.labelTagsColor";
 
     String BLIND_TABLE_BORDER_COLOR = "ADesigner.blind.tableBorderColor";
-    
+
+    String BLIND_CAPTION_COLOR = "ADesigner.blind.captionColor";
+
 }
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/PreferenceInitializer.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/PreferenceInitializer.java
index dd086a6..cde00cc 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/PreferenceInitializer.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/engines/blind/ui/preferences/PreferenceInitializer.java
@@ -46,6 +46,7 @@
         store.setDefault(IBlindPreferenceConstants.BLIND_INPUT_TAGS_COLOR, "255,153,0");
         store.setDefault(IBlindPreferenceConstants.BLIND_LABEL_TAGS_COLOR, "255,128,255");
         store.setDefault(IBlindPreferenceConstants.BLIND_TABLE_BORDER_COLOR, "0,0,0");
+        store.setDefault(IBlindPreferenceConstants.BLIND_CAPTION_COLOR, "255,255,128");
                      
     }
 
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
index a9e2b5c..e123d4d 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind/src/org/eclipse/actf/visualization/internal/engines/blind/Messages.java
@@ -69,6 +69,7 @@
 	public static String DialogSettingBlind_Input_tags_22;
 	public static String DialogSettingBlind_Label_tags_23;
 	public static String DialogSettingBlind_Tabel_border_24;
+	public static String DialogSettingBlind_Caption_tags_25;
 	
 	public static String VisualizeBrowserMode;
 	public static String VisualizeBrowserModeTooltip;
