This commit was manufactured by cvs2svn to create tag 'ACTF_090'.
diff --git a/features/org.eclipse.actf.ai-feature/.project b/features/org.eclipse.actf.ai-feature/.project
deleted file mode 100644
index 74479f7..0000000
--- a/features/org.eclipse.actf.ai-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.actf.ai-feature/build.properties b/features/org.eclipse.actf.ai-feature/build.properties
deleted file mode 100644
index 36bf9db..0000000
--- a/features/org.eclipse.actf.ai-feature/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
-               license.html,\
-               epl-v10.html,\
-               feature.properties
diff --git a/features/org.eclipse.actf.ai-feature/epl-v10.html b/features/org.eclipse.actf.ai-feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.actf.ai-feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.actf.ai-feature/feature.properties b/features/org.eclipse.actf.ai-feature/feature.properties
deleted file mode 100644
index 7940379..0000000
--- a/features/org.eclipse.actf.ai-feature/feature.properties
+++ /dev/null
@@ -1,143 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-#
-#featureName=Eclipse ACTF
-#updateSiteName=The Eclipse Project Updates
-#providerName=Eclipse.org
-#
-description=Eclipse Accessibility Tools Framework (ACTF) Alternative Interface Feature.
-#
-copyright=Copyright (c) 2007, 2008 IBM Corporation and others.\nAll rights reserved. This program and the accompanying materials\nare made available under the terms of the Eclipse Public License v1.0\nwhich accompanies this distribution, and is available at\nhttp\://www.eclipse.org/legal/epl-v10.html\n\nContributors\:\nIBM Corporation - initial API and implementation\n
-licenseURL=license.html
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.actf.ai-feature/feature.xml b/features/org.eclipse.actf.ai-feature/feature.xml
deleted file mode 100644
index 987495c..0000000
--- a/features/org.eclipse.actf.ai-feature/feature.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.actf.ai"
-      label="Accessibility Tools Framework (ACTF) Alternative Interface feature (Incubation)"
-      version="0.5.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.ui" version="3.2.0" match="compatible"/>
-      <import plugin="org.eclipse.core.runtime" version="3.2.0" match="compatible"/>
-      <import plugin="org.eclipse.swt"/>
-      <import plugin="com.ibm.icu"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.actf.ai.audio.description"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.audio.io"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.dombycom"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.screenreader.jaws"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.xmlstore"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.win32"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.voice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.ui.editors.ie"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.httpproxy"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.jxpath"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.vocab"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.key.keyui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.navigator"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.fennec"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.query"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.screenreader.windoweyes"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.flash.proxy"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.tts.protalker"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.tts.sapi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.flash"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.dombycom.flash"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.win32.comclutch"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.html"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.jxpath"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.actf.ai-feature/license.html b/features/org.eclipse.actf.ai-feature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.actf.ai-feature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/.classpath b/plugins/org.eclipse.actf.ai.audio.description/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/.project b/plugins/org.eclipse.actf.ai.audio.description/.project
deleted file mode 100644
index f0c20b7..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.audio.description</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.actf.ai.audio.description/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 9784c8a..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Jan 06 15:25:00 JST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF
deleted file mode 100644
index cb258a8..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,23 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Audio Description Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.audio.description;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.actf.ai.fennec,
- org.eclipse.actf.ai.navigator,
- org.eclipse.actf.ai.voice,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.actf.core,
- org.eclipse.actf.ui,
- org.eclipse.actf.model.ui,
- org.eclipse.actf.model.dom.dombycom,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.ai.audio.io
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.audio.description
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.actf.ai.audio.description/about.html b/plugins/org.eclipse.actf.ai.audio.description/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/build.properties b/plugins/org.eclipse.actf.ai.audio.description/build.properties
deleted file mode 100644
index 86eff37..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               plugin.properties,\
-               plugin_ja.properties,\
-               icons/,\
-			   about.html,\
-               src/messages.properties,\
-               src/messages_ja.properties
diff --git a/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif b/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif
deleted file mode 100644
index f60045c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif b/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif
deleted file mode 100644
index 3b79303..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin.properties b/plugins/org.eclipse.actf.ai.audio.description/plugin.properties
deleted file mode 100644
index 35d412b..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.preference.name=Audio Description
-AudioDescription.view.name=Audio Description
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin.xml b/plugins/org.eclipse.actf.ai.audio.description/plugin.xml
deleted file mode 100644
index 9d23b51..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.navigator.MediaControl">
-      <controller class="org.eclipse.actf.ai.audio.description.impl.MediaControlImpl"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.views">
-      <view
-            category="org.eclipse.actf.ai.ui.views"
-            class="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-            icon="icons/micx16.gif"
-            id="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-            name="%AudioDescription.view.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.perspectiveExtensions">
-      <perspectiveExtension targetID="org.eclipse.actf.examples.aibrowser.DefaultPerspective">
-         <view
-               closeable="false"
-               id="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-               moveable="true"
-               ratio="0.7"
-               relationship="bottom"
-               relative="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-               showTitle="true"
-               standalone="false"
-               visible="true"/>
-      </perspectiveExtension>
-   </extension>
-   <!--extension
-         point="org.eclipse.ui.actionSets">
-      <actionSet
-            id="org.eclipse.actf.ai.audio.description.actionSet1"
-            label="org.eclipse.actf.ai.audio.description.actionSet1"
-            visible="true">
-         <action
-               class="org.eclipse.actf.ai.audio.description.actions.AudioDescriptionActionDelegate"
-               id="org.eclipse.actf.ai.audio.description.AudioDescription"
-               label="&amp;Audio Description"
-               menubarPath="org.eclipse.actf.examples.aibrowser.FileMenu/filegroup"
-               state="false"
-               style="toggle"
-               tooltip="Toggle audio description mode"/>
-      </actionSet>
-   </extension-->
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            category="org.eclipse.actf.ui.preferences.RootPreferencePage"
-            class="org.eclipse.actf.ai.audio.description.preferences.ADPreferencePage"
-            id="org.eclipse.actf.ai.audio.description.preferences.ADPreferencePage"
-            name="%AudioDescription.preference.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer class="org.eclipse.actf.ai.audio.description.preferences.ADPreferenceInitializer"/>
-   </extension>
-   <!-- experimental
-   <extension
-         point="org.eclipse.ui.actionSets">
-      <actionSet
-            id="org.eclipse.actf.ai.audio.description.actionSet1"
-            label="Audio Description"
-            visible="true">
-         <action
-               accelerator="F11"
-               class="org.eclipse.actf.ai.audio.description.actions.ReadAdditionalDescriptionAction"
-               id="org.eclipse.actf.ai.audio.description.action1"
-               label="Read &amp;Additional Description"
-               menubarPath="navigate/"
-               state="false"
-               style="push">
-         </action>
-      </actionSet>
-   </extension>
-   -->
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties b/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties
deleted file mode 100644
index db0b66b..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.preference.name=\u97f3\u58f0\u89e3\u8aac
-AudioDescription.view.name=\u97f3\u58f0\u89e3\u8aac
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
deleted file mode 100644
index 09b078b..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription_view_time=Time
-AudioDescription_view_desc=Description
-AudioDescription_view_enable=Enable
-AudioDescription_view_notEnable=Not Enable
-
-AudioDescription_preference_title=Audio Description Preference
-AudioDescription_voice_engine=TTS engine
-Metadata_available=Audio Description is Available
-
-AudioDescription_on=Audio Description is on
-AudioDescription_off=Audio Description is off
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
deleted file mode 100644
index a2781e2..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription_view_time=\u6642\u9593
-AudioDescription_view_desc=\u8aac\u660e
-AudioDescription_view_enable=\u89e3\u8aac\u30aa\u30f3
-AudioDescription_view_notEnable=\u89e3\u8aac\u30aa\u30d5
-
-AudioDescription_preference_title=\u97f3\u58f0\u8a2d\u5b9a
-AudioDescription_voice_engine=TTS\u30a8\u30f3\u30b8\u30f3
-
-Metadata_available=\u97f3\u58f0\u89e3\u8aac\u5229\u7528\u53ef\u80fd
-
-AudioDescription_on=\u97f3\u58f0\u89e3\u8aac\u30aa\u30f3
-AudioDescription_off=\u97f3\u58f0\u89e3\u8aac\u30aa\u30d5
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java
deleted file mode 100644
index a0cdc58..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description;
-
-/**
- * This represents an item of audio description such as following declaration.
- * 
- * <pre>
- *   &lt;item importance=&quot;high&quot; type=&quot;pause-before|speak&quot;&gt;
- *     &lt;start type=&quot;relTime&quot;&gt;00:00:100&lt;/start&gt;
- *     &lt;duration&gt;00:04:500&lt;/duration&gt;
- *     &lt;description xml:lang=&quot;en&quot;&gt;The following preview has been approved for all audiences.&lt;/description&gt;
- *   &lt;/item&gt;
- * </pre>
- */
-public interface IMetadata {
-	/**
-	 * Importance is low.
-	 */
-	int IMPORTANCE_LOW = 0;
-	/**
-	 * Importance is middle.
-	 */
-	int IMPORTANCE_MIDDLE = 1;
-	/**
-	 * Importance is high.
-	 */
-	int IMPORTANCE_HIGH = 2;
-
-	/**
-	 * Null mask.
-	 */
-	int MASK_NONE = 0;
-	/**
-	 * The description will be spoken.
-	 */
-	int MASK_SPEAK = 1;
-	/**
-	 * The video should be paused before speaking the description.
-	 */
-	int MASK_PAUSE_BEFORE = 1 << 1;
-	/**
-	 * The video should be paused after speaking the description.
-	 */
-	int MASK_PAUSE_AFTER = 1 << 2;
-	/**
-	 * The video should be paused during speaking the description.
-	 */
-	int MASK_PAUSE_DURING_SPEAK = 1 << 3;
-
-	/**
-	 * @return the inner text of the <i>description tag</i>.
-	 */
-	String getDescription();
-
-	/**
-	 * @return the time to start in 1/1000 second.
-	 */
-	int getStartTime();
-
-	/**
-	 * @return the time of duration in 1/1000 second.
-	 */
-	int getDuration();
-
-	/**
-	 * @return the xml:lang string specified in the <i>description tag</i>
-	 */
-	String getLang();
-
-	/**
-	 * @return the type value, combination of the following masks, corresponding
-	 *         to the <i>type attribute</i> in the <i>item tag</i>
-	 * @see #MASK_PAUSE_BEFORE
-	 * @see #MASK_SPEAK
-	 * @see #MASK_PAUSE_AFTER
-	 * @see #MASK_PAUSE_DURING_SPEAK
-	 */
-	int getType();
-
-	/**
-	 * @return the importance value specified in the <i>item tag</i>
-	 * @see #IMPORTANCE_LOW
-	 * @see #IMPORTANCE_MIDDLE
-	 * @see #IMPORTANCE_HIGH
-	 */
-	int getImportance();
-
-	int getSpeed();
-
-	String getGender();
-
-	/*
-	 * public String getAddition();
-	 * 
-	 * public void setAddition(String addition);
-	 * 
-	 * public boolean hasAddition();
-	 * 
-	 * public void setAdditionSpeed(String speed);
-	 * 
-	 * public int getAdditionSpeed();
-	 * 
-	 * public void setAdditionGender(String gender);
-	 * 
-	 * public String getAdditionGender();
-	 */
-
-	public boolean hasValidWav();
-
-	public String getWavUri();
-
-	public String getWavLocal();
-
-	public int getWavSpeed();
-
-	public boolean getWavEnabled();
-
-	public void setWavUri(String wavUri);
-
-	public void setWavLocal(String wavLocal);
-
-	public void setWavSpeed(String wavSpeed);
-
-	public void setWavEnabled(String wavEnabled);
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java
deleted file mode 100644
index ccf70e0..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description;
-
-import java.util.ArrayList;
-import java.util.Locale;
-
-/**
- * This represents an audio description file.
- */
-public interface IMetadataProvider {
-	/**
-	 * @return the number of items.
-	 */
-	public int getSize();
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @param index
-	 *            the index of the item.
-	 * @return the item of audio description specified by the index.
-	 */
-	public IMetadata getItem(int index);
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @return the list of the items of audio description.
-	 */
-	public ArrayList<IMetadata> getAllItems();
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @param position
-	 *            the position of the video in 1/1000 second from the start of
-	 *            the video.
-	 * @return the index of the item corresponding to the position.
-	 */
-	public int getIndex(int position);
-
-	/**
-	 * Set the locale information to the provider. The provider selects
-	 * descriptions for the locale.
-	 * 
-	 * @param locale
-	 *            the local to be set.
-	 */
-	public void setLocale(Locale locale);
-
-	/**
-	 * Prepare the metadata information in the default locale or the locale
-	 * specified by {@link #setLocale(Locale)}.
-	 * 
-	 * @see #setLocale(Locale)
-	 * @see #prepareMetadata(Locale)
-	 */
-	public void prepareMetadata();
-
-	/**
-	 * Prepare the metadata information in the specified locale.
-	 * 
-	 * @param locale
-	 *            the local to be used.
-	 */
-	public void prepareMetadata(Locale locale);
-
-	/**
-	 * Reload the audio description file.
-	 */
-	public void reload();
-
-	/**
-	 * @return whether the instance has any metadata information or not.
-	 */
-	public boolean hasMetadata();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/actions/ReadAdditionalDescriptionAction.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/actions/ReadAdditionalDescriptionAction.java
deleted file mode 100644
index 401537d..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/actions/ReadAdditionalDescriptionAction.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.eclipse.actf.ai.audio.description.actions;
-
-import org.eclipse.actf.ai.audio.description.impl.MetadataManager;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-public class ReadAdditionalDescriptionAction implements
-		IWorkbenchWindowActionDelegate {
-
-	public void dispose() {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void init(IWorkbenchWindow window) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void run(IAction action) {
-		MetadataManager.requestAdditions();
-	}
-
-	public void selectionChanged(IAction action, ISelection selection) {
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
deleted file mode 100644
index e21300a..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.HashMap;
-
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-
-public class MediaControlImpl implements IMediaControl {
-
-	private HashMap<IHandle, MetadataManager> map = new HashMap<IHandle, MetadataManager>();
-	// private List<MetadataManager> managers = new Vector<MetadataManager>();
-
-	MetadataManager manager;
-	MetadataManager oldManager;
-
-	IHandle old = null;
-
-	IHandle handle;
-
-	public void dispose(IHandle handle) {
-	}
-
-	public void start(IHandle handle) {
-		// if (handle.getSoundControl() == null || handle.getVideoControl() ==
-		// null)
-		// return;
-		initialize(handle);
-	}
-
-	private void initialize(IHandle handle) {
-		this.handle = handle;
-		MetadataManager temp = map.get(handle);
-		IMetadataProvider provider = null;
-
-		if (temp == null) {
-			String url = handle.getWebBrowser().getURL();
-			provider = DescriptionPlugin.getDefault().getMetadata(url);
-			temp = new MetadataManager(handle, provider);
-
-			if (handle.getVideoControl() != null)
-				handle.getVideoControl().addEventListener(
-						new MediaSyncEventListener(handle, temp));
-			// System.out.println(temp);
-			// map.put(handle, temp);
-		}
-		if (manager != null) {
-			manager.stop();
-		}
-		manager = temp;
-		manager.start();
-		DescriptionPlugin.getDefault().setActiveMetadataProvider(provider);
-
-		if (manager.hasMetadata()) {
-			if (oldManager != null) {
-				System.out.println(oldManager.getMetadataProvider());
-				System.out.println(manager.getMetadataProvider());
-			}
-			if (oldManager == null
-					|| oldManager.getMetadataProvider() != manager
-							.getMetadataProvider()) {
-				if (handle.getVoice() != null) {
-					// speakInfo(false);
-				}
-				oldManager = manager;
-			}
-		} else {
-			// handle.getVoice().speak(Messages.getString("Metadata.notAvailable"),
-			// false);
-		}
-	}
-
-	public void speakInfo(boolean flush) {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		if (!plugin.isAvailable())
-			return;
-		if (handle.getVoice() == null)
-			return;
-
-		if (plugin.getEnable()) {
-			handle.getVoice().speak(Messages.AudioDescription_on,
-					flush);
-		} else {
-			handle.getVoice().speak(Messages.AudioDescription_off,
-					flush);
-		}
-	}
-
-	public int toggleEnabled() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.toggleEnable();
-	}
-
-	public boolean isAvailable() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.isAvailable();
-	}
-
-	public boolean toggleViewShowing() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.getDescriptionView().toggleViewShowing();
-	}
-
-	public boolean isEnabled() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.getEnable();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java
deleted file mode 100644
index dd0f539..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.IMediaSyncEventListener;
-import org.eclipse.actf.ai.navigator.IMediaControl.IHandle;
-
-public class MediaSyncEventListener implements IMediaSyncEventListener {
-
-	private static final double EVENT_INTERVAL = 0.1; // 100ms
-
-	private IHandle handle;
-	private MetadataManager manager;
-
-	public MediaSyncEventListener(IHandle handle, MetadataManager manager) {
-		this.handle = handle;
-		this.manager = manager;
-	}
-
-	public void run() {
-		if (handle.getVideoControl() != null) {
-			double time = handle.getVideoControl().getCurrentPosition();
-			manager.process(time);
-		}
-	}
-
-	public double getInterval() {
-		return EVENT_INTERVAL;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java
deleted file mode 100644
index 15f6cdd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.audio.description.util.TimeFormatUtil;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-
-public class MetadataContentProvider extends LabelProvider implements
-		IStructuredContentProvider, ITableLabelProvider {
-
-	@Override
-	public void dispose() {
-	}
-
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-	}
-
-	public Object[] getElements(Object inputElement) {
-		if (inputElement instanceof IMetadataProvider) {
-			IMetadataProvider provider = (IMetadataProvider) inputElement;
-
-			String[][] ret = new String[provider.getSize()][2];
-			for (int i = 0; i < ret.length; i++) {
-				IMetadata metadata = provider.getItem(i);
-				ret[i][0] = ""
-						+ TimeFormatUtil
-								.getTimeString(metadata.getStartTime() / 100.0);
-				ret[i][1] = "" + metadata.getDescription();
-			}
-			return ret;
-		}
-		return null;
-	}
-
-	public Image getColumnImage(Object element, int columnIndex) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String getColumnText(Object element, int columnIndex) {
-		if (element instanceof String[]) {
-			return ((String[]) element)[columnIndex];
-		}
-		return "";
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java
deleted file mode 100644
index cd3c377..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.Locale;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.voice.IVoice;
-
-public class MetadataImpl implements IMetadata {
-	private double scale = 1;
-
-	private String sTime;
-
-	private int type = MASK_SPEAK;
-
-	private int start;
-
-	private int originalTime;
-
-	private int duration;
-
-	private String description;
-
-	private int importance;
-
-	private String lang;
-
-	private int speed = IVoice.SPEED_NORMAL;
-
-	private String gender = ITTSEngine.GENDER_MALE;
-
-	/*
-	 * private String addition = "";
-	 * 
-	 * private boolean hasAddition = false;
-	 * 
-	 * private String additionGender = ITTSEngine.GENDER_MALE;
-	 * 
-	 * private int additionSpeed = IVoice.SPEED_NORMAL;
-	 */
-
-	private boolean hasValidWav = false;
-
-	private int wavSpeed = 100;
-
-	private String wavUri = "";
-
-	private String wavLocal = "";
-
-	private boolean wavEnabled = true;
-
-	public MetadataImpl(String start, String duration, String desc,
-			String lang, String importance, String speed, String gender,
-			String extended) {
-		setStart(start);
-		setDuration(duration);
-		setLang(lang);
-		setDescription(desc);
-		setImportance(importance);
-		setSpeed(speed);
-		setGender(gender);
-		setExtended(extended);
-	}
-
-	private void setExtended(String extended) {
-		if ("true".equalsIgnoreCase(extended)) {
-			setType(MASK_PAUSE_DURING_SPEAK | MASK_SPEAK);
-		}
-	}
-
-	private void setSpeed(String speed) {
-		try {
-			int speedVal = Integer.parseInt(speed);
-			if (speedVal >= IVoice.SPEED_MIN && speedVal <= IVoice.SPEED_MAX) {
-				this.speed = speedVal;
-			}
-		} catch (Exception e) {
-		}
-	}
-
-	private void setGender(String gender) {
-		if (ITTSEngine.GENDER_MALE.equalsIgnoreCase(gender)) {
-			this.gender = ITTSEngine.GENDER_MALE;
-		} else if (ITTSEngine.GENDER_FEMALE.equalsIgnoreCase(gender)) {
-			this.gender = ITTSEngine.GENDER_FEMALE;
-		}
-	}
-
-	private void setType(int type) {
-		this.type = type;
-	}
-
-	private void setStart(String start) {
-		this.start = string2time(start);
-		setStringTime();
-	}
-
-	private void setDuration(String duration) {
-		this.duration = string2time(duration);
-	}
-
-	private void setLang(String lang) {
-		this.lang = (new Locale(lang)).getLanguage();
-	}
-
-	private void setDescription(String desc) {
-		this.description = desc;
-	}
-
-	private void setImportance(String importance) {
-		importance = importance.toLowerCase();
-		if (importance.equals("low")) {
-			this.importance = IMPORTANCE_LOW;
-		} else if (importance.equals("middle")) {
-			this.importance = IMPORTANCE_MIDDLE;
-		} else if (importance.equals("high")) {
-			this.importance = IMPORTANCE_HIGH;
-		}
-	}
-
-	private int string2time(String str) {
-		int time = 0;
-		try {
-			String[] part = str.split(":");
-			int[] r = new int[] { 1, 1000, 60000, 3600000 };
-
-			time = 0;
-			for (int i = part.length - 1, j = 0; i >= 0; i--, j++) {
-				int temp = Integer.parseInt(part[i]);
-				time += temp * r[j];
-			}
-			time /= 10;
-		} catch (Exception e) {
-			e.printStackTrace();
-			time = 0;
-		}
-		return time;
-	}
-
-	private void setStringTime() {
-		int temp = getStartTime();
-		int mm = 0;
-		int s = 0;
-		int m = 0;
-		int h = 0;
-		mm = temp % 100;
-		temp -= mm;
-		temp /= 100;
-		s = temp % 60;
-		temp -= s;
-		temp /= 60;
-		m = temp % 60;
-		temp -= m;
-		temp /= 60;
-		h = temp;
-
-		StringBuffer sb = new StringBuffer();
-		if (h != 0) {
-			sb.append(h + "h");
-		}
-		sb.append((m < 10 ? "0" : "") + m + "m");
-		sb.append((s < 10 ? "0" : "") + s + "s");
-		sb.append((mm < 10 ? "0" : "") + mm);
-
-		sTime = sb.toString();
-	}
-
-	public void setScale(double scale) {
-		this.scale = scale;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public int getStartTime() {
-		int temp = start;
-		if (temp < 0) {
-			temp = 0;
-		}
-		return (int) (temp * scale);
-	}
-
-	public int getType() {
-		return type;
-	}
-
-	@Override
-	public String toString() {
-		return start + " (" + duration + ") " + description + ", " + importance;
-	}
-
-	public String getStringTime() {
-		return sTime;
-	}
-
-	public void refresh() {
-		start = originalTime;
-		setStringTime();
-	}
-
-	public int getDuration() {
-		return duration;
-	}
-
-	public String getLang() {
-		return lang;
-	}
-
-	public int getImportance() {
-		return importance;
-	}
-
-	public int getSpeed() {
-		return speed;
-	}
-
-	public String getGender() {
-		return gender;
-	}
-
-	/*
-	 * public String getAddition() { return addition; }
-	 * 
-	 * public void setAddition(String addition) { if (addition != null) {
-	 * this.addition = addition; hasAddition = true; } }
-	 * 
-	 * public boolean hasAddition() { return hasAddition; }
-	 * 
-	 * public String getAdditionGender() { return additionGender; }
-	 * 
-	 * public int getAdditionSpeed() { return additionSpeed; }
-	 * 
-	 * public void setAdditionGender(String gender) { if
-	 * (ITTSEngine.GENDER_MALE.equalsIgnoreCase(gender)) { this.additionGender =
-	 * ITTSEngine.GENDER_MALE; } else if
-	 * (ITTSEngine.GENDER_FEMALE.equalsIgnoreCase(gender)) { this.additionGender
-	 * = ITTSEngine.GENDER_FEMALE; } }
-	 * 
-	 * public void setAdditionSpeed(String speed) { try { int speedVal =
-	 * Integer.parseInt(speed); if (speedVal >= IVoice.SPEED_MIN && speedVal <=
-	 * IVoice.SPEED_MAX) { this.additionSpeed = speedVal; } } catch (Exception
-	 * e) { } }
-	 */
-
-	public boolean getWavEnabled() {
-		return wavEnabled;
-	}
-
-	public String getWavLocal() {
-		return wavLocal;
-	}
-
-	public int getWavSpeed() {
-		return wavSpeed;
-	}
-
-	public String getWavUri() {
-		return wavUri;
-	}
-
-	public void setWavEnabled(String wavEnabled) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void setWavLocal(String wavLocal) {
-		this.wavLocal = wavLocal;
-		// TODO validation
-		hasValidWav = true;
-	}
-
-	public void setWavSpeed(String wavSpeed) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void setWavUri(String wavUri) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public boolean hasValidWav() {
-		return hasValidWav;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java
deleted file mode 100644
index 69fdc21..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.audio.io.AudioFactory;
-import org.eclipse.actf.ai.audio.io.AudioPipeListener;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.navigator.IMediaControl.IHandle;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.model.dom.dombycom.INodeExVideo;
-import org.eclipse.actf.model.ui.util.ModelServiceUtils;
-import org.eclipse.swt.widgets.Display;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-public class MetadataManager implements IVoiceEventListener, AudioPipeListener {
-
-	private IMetadataProvider metadataProvider;
-
-	private IAudioPipe audio;
-
-	private IAudioWriter writer = AudioFactory.createDefaultWriter();
-
-	private int index;
-
-	private int oldIndex;
-
-	private int forceFlag = IMetadata.MASK_NONE;
-
-	private IHandle handle;
-
-	private IVideoControl video;
-
-	@SuppressWarnings("unused")
-	private ISoundControl sound;
-
-	private boolean stopFlag = false;
-
-	private int voiceIndex = -1;
-
-	private static boolean requestAdditions = false;
-
-	private boolean restart = false;
-
-	public void setForceFlag(int flag) {
-		forceFlag = flag;
-	}
-
-	private AnalyzedResult analyzedResult;
-
-	public MetadataManager(IHandle handle, IMetadataProvider metadataProvider) {
-		this.handle = handle;
-		this.video = handle.getVideoControl();
-		this.sound = handle.getSoundControl();
-
-		this.metadataProvider = metadataProvider;
-		index = oldIndex = -1;
-
-		final IHandle handle2 = handle;
-		Thread thread = new Thread() {
-			public void run() {
-				while (true) {
-					try {
-						Thread.sleep(100);
-					} catch (InterruptedException e) {
-						e.printStackTrace();
-					}
-					if (restart) {
-						Display.getDefault().syncExec(new Runnable() {
-							public void run() {
-								System.out.println("play");
-								handle2.getVideoControl().playMedia();
-							}
-						});
-						restart = false;
-					}
-				}
-			};
-		};
-		thread.start();
-
-		DescriptionPlugin.getDefault().setVoiceEventListener(this);
-	}
-
-	private boolean pauseBeforeFlag = false;
-
-	private boolean speakFlag = false;
-
-	private boolean pauseAfterFlag = false;
-
-	private boolean pauseDualingSpeakFlag = false;
-
-	//experimental
-	private String addition = "";
-	private int additionSpeed;
-	private String additionGender;
-	private boolean additionFlag;
-
-	public void process(double time) {
-		if (stopFlag)
-			return;
-
-		DescriptionPlugin.getDefault().getDescriptionView().setTime(time);
-
-		if (metadataProvider == null)
-			return;
-		index = metadataProvider.getIndex((int) (time * 100));
-		// System.out.println(time+",
-		// "+metadataProvider.getItem(index).getTime());
-
-		IMetadata curMetadata = null;
-
-		if (oldIndex != index && oldIndex < index) {
-			curMetadata = metadataProvider.getItem(index);
-			int type = curMetadata.getType();
-
-			pauseBeforeFlag = isIt(type | forceFlag,
-					IMetadata.MASK_PAUSE_BEFORE);
-			speakFlag = isIt(type | forceFlag, IMetadata.MASK_SPEAK);
-			pauseAfterFlag = isIt(type | forceFlag, IMetadata.MASK_PAUSE_AFTER);
-			pauseDualingSpeakFlag = isIt(type | forceFlag,
-					IMetadata.MASK_PAUSE_DURING_SPEAK);
-		}
-
-		if (pauseBeforeFlag || pauseDualingSpeakFlag) {
-			pauseBeforeFlag = false;
-			voiceIndex = 100;
-			processPause();
-		}
-		if (speakFlag) {
-			speakFlag = false;
-
-			requestAdditions = false;
-
-			/*
-			 * if (null != curMetadata && curMetadata.hasAddition()) {
-			 * additionFlag = true; voiceIndex = 200; addition =
-			 * curMetadata.getAddition(); additionSpeed =
-			 * curMetadata.getAdditionSpeed(); additionGender =
-			 * curMetadata.getAdditionGender(); }
-			 */
-
-			processSpeak();
-		}
-		if (pauseAfterFlag) {
-			pauseAfterFlag = false;
-			processPause();
-		}
-		if (pauseDualingSpeakFlag) {
-			pauseDualingSpeakFlag = false;
-			// processPlay();
-		}
-
-		oldIndex = index;
-	}
-
-	private boolean isIt(int type, int pause) {
-		return (type & pause) == pause;
-	}
-
-	private void analyze() {
-		// TODO tentative code
-		analyzedResult = new AnalyzedResult();
-		Document doc = ModelServiceUtils.getActiveModelService()
-				.getLiveDocument();
-		Node root = null;
-		if (doc != null)
-			root = doc.getFirstChild();
-		if (root instanceof INodeEx) {
-			analyzedResult = ((INodeEx) root).analyze(analyzedResult);
-		}
-	}
-
-	private void processPause() {
-		if (DescriptionPlugin.getDefault().getEnable())
-			handle.getVideoControl().pauseMedia();
-		// pauseMedia();
-	}
-
-	private void processPlay() {
-		if (DescriptionPlugin.getDefault().getEnable())
-			handle.getVideoControl().playMedia();
-		// playMedia();
-	}
-
-	private void processSpeak() {
-		if (DescriptionPlugin.getDefault().getEnable()) {
-
-			/*
-			 * int[] volumes = null; volumes = sound.getVolumes(); int[]
-			 * volumes2 = new int[volumes.length]; for(int i=0;
-			 * i<volumes2.length; i++) volumes2[i] = 200;
-			 * sound.setVolumes(volumes2);
-			 */
-			IMetadata metadata = metadataProvider.getItem(index);
-
-			if (metadata.hasValidWav()) {
-				if (audio != null && audio.isActive()) {
-					// TODO
-					audio.stop();
-				}
-
-				// TODO check
-				IAudioReader reader;
-				try {
-					reader = AudioFactory.createAudioReader(new URL(metadata
-							.getWavLocal()));
-					audio = AudioFactory.createAudioPipe(reader, writer);
-					audio.setBufferSize(100);
-					audio.setInterval(1);
-					audio.prepare();
-					audio.addAudioPipeListener(this);
-					audio.start();
-				} catch (MalformedURLException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-
-			} else {
-				say(metadata.getDescription(), metadata.getSpeed(), metadata
-						.getGender());
-
-			}
-		}
-	}
-
-	private void processAdditionSpeak() {
-		if (DescriptionPlugin.getDefault().getEnable()) {
-			say(addition, additionSpeed, additionGender);
-		}
-	}
-
-	public void say(String str, int speed, String gender) {
-		// System.out.println(str);
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		if (plugin.canSpeak()) {
-			plugin.speak(str, speed, gender);
-			if (voiceIndex != -1) {
-				plugin.addSpeakIndex(voiceIndex);
-			}
-		} else {
-			handle.getVoice().speak(str, true);
-		}
-	}
-
-	public void stop() {
-		stopFlag = true;
-	}
-
-	public void start() {
-		stopFlag = false;
-		DescriptionPlugin.getDefault().getDescriptionView().setInput(
-				metadataProvider);
-	}
-
-	public boolean hasMetadata() {
-		if (metadataProvider == null)
-			return false;
-		return metadataProvider.hasMetadata();
-	}
-
-	public Object getMetadataProvider() {
-		return metadataProvider;
-	}
-
-	// TODO tentative from here
-	// TODO cache
-	public boolean pauseMedia() {
-		analyze();
-		INodeExVideo[] videos = analyzedResult.getVideoNodes();
-		boolean r = true;
-		for (int i = 0; i < videos.length; i++) {
-			r &= videos[i].pauseMedia();
-		}
-		return r;
-	}
-
-	public boolean playMedia() {
-		analyze();
-		INodeExVideo[] videos = analyzedResult.getVideoNodes();
-		boolean r = true;
-		for (int i = 0; i < videos.length; i++) {
-			r &= videos[i].playMedia();
-		}
-		return r;
-	}
-
-	// tentative end here
-
-	public void indexReceived(int index) {
-		if (100 == index) {
-			// playMedia();
-			handle.getVideoControl().playMedia();
-			voiceIndex = -1;
-		} else if (200 == index && additionFlag) {
-			additionFlag = false;
-			if (requestAdditions) {
-				voiceIndex = 100;
-				handle.getVideoControl().pauseMedia();
-				// pauseMedia();
-				processAdditionSpeak();
-				requestAdditions = false;
-			} else {
-				voiceIndex = -1;
-			}
-		}
-	}
-
-	// TODO
-	public static void requestAdditions() {
-		requestAdditions = true;
-	}
-
-	public void finished(IAudioPipe pipe) {
-		if (voiceIndex == 100) {
-			restart = true;
-		}
-	}
-
-	public void stopped(IAudioPipe pipe) {
-		System.out.println("stop");
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java
deleted file mode 100644
index adcaf66..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Set;
-import java.util.Stack;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class MetadataProviderImpl implements IMetadataProvider {
-
-	private static class Key {
-		public String id;
-
-		public String lang;
-
-		public Key(String id, String lang) {
-			this.id = id;
-			if (lang == null || lang.length() == 0) {
-				this.lang = "";
-			} else {
-				this.lang = (new Locale(lang)).getLanguage();
-			}
-		}
-
-		@Override
-		public int hashCode() {
-			return toString().hashCode();
-		}
-
-		@Override
-		public boolean equals(Object o) {
-			return toString().equals(o.toString());
-		}
-
-		@Override
-		public String toString() {
-			return id + lang;
-		}
-	}
-
-	private HashMap<Key, ArrayList<IMetadata>> metadataList = new HashMap<Key, ArrayList<IMetadata>>();
-
-	private ArrayList<IMetadata> metadata;
-
-	private ArrayList<IXMLInfo> entries;
-
-	private Locale locale = null;
-
-	public MetadataProviderImpl(ArrayList<IXMLInfo> entries) {
-		this.entries = entries;
-	}
-
-	public void reload() {
-		metadataList.clear();
-		readFile();
-	}
-
-	private Stack<String> langStack = new Stack<String>();
-
-	private class BaseHandler extends DefaultHandler {
-		private BaseHandler back;
-
-		private IXMLInfo entry;
-
-		public BaseHandler(BaseHandler back, IXMLInfo entry) {
-			this.back = back;
-			this.entry = entry;
-		}
-
-		public BaseHandler(BaseHandler back) {
-			this.back = back;
-			this.entry = back.getEntry();
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			if (attributes.getValue("xml:lang") != null) {
-				langStack.push(attributes.getValue("xml:lang"));
-			} else {
-				langStack.push(langStack.peek() + "");
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			langStack.pop();
-			getEntry().setContentHandler(back);
-		}
-
-		public IXMLInfo getEntry() {
-			return entry;
-		}
-	}
-
-	private class AllHandler extends BaseHandler {
-		private boolean altFlag;
-
-		public AllHandler(IXMLInfo entry) {
-			super(null, entry);
-			langStack.clear();
-			langStack.push("");
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			super.startElement(uri, localName, qName, attributes);
-
-			if (altFlag) {
-				if ("item".equals(localName)) {
-					String importance = attributes.getValue("importance");
-					if (importance == null || importance.length() == 0) {
-						importance = "middle";
-					}
-					getEntry().setContentHandler(
-							new ItemHandler(this, importance));
-				}
-			} else {
-				if ("alternative".equals(localName)) {
-					String type = attributes.getValue("type");
-					if (type != null && type.equals("audio-description")) {
-						altFlag = true;
-					}
-				}
-				if ("volumeLevel".equals(localName)) {
-					// do nothing
-				}
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			if ("alternative".equals(localName)) {
-				altFlag = false;
-			}
-			// super.endElement(uri, localName, qName);
-		}
-	}
-
-	private class ItemHandler extends BaseHandler {
-		private boolean descFlag = false;
-
-		private boolean startFlag = false;
-
-		private boolean durationFlag = false;
-
-		private boolean additionFlag = false;
-
-		private boolean waveFlag = false;
-
-		private StringBuffer buf = new StringBuffer();
-
-		private String start;
-
-		private String duration;
-
-		private ArrayList<String> speed = new ArrayList<String>();
-
-		private ArrayList<String> gender = new ArrayList<String>();
-
-		private ArrayList<String> desc = new ArrayList<String>();
-
-		private ArrayList<String> lang = new ArrayList<String>();
-
-		private ArrayList<String> extended = new ArrayList<String>();
-
-		/*
-		 * experimental private ArrayList<String> additions = new
-		 * ArrayList<String>();
-		 * 
-		 * private ArrayList<String> additionsLang = new ArrayList<String>();
-		 * 
-		 * private ArrayList<String> additionsSpeed = new ArrayList<String>();
-		 * 
-		 * private ArrayList<String> additionsGender = new ArrayList<String>();
-		 */
-
-		private ArrayList<String> waveLocal = new ArrayList<String>();
-
-		private String importance;
-
-		public ItemHandler(BaseHandler back, String importance) {
-			super(back);
-			this.importance = importance;
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			super.startElement(uri, localName, qName, attributes);
-
-			if ("start".equals(localName)) {
-				if (attributes.getValue("type").equals("relTime")) {
-					startFlag = true;
-				}
-			} else if ("duration".equals(localName)) {
-				durationFlag = true;
-			} else if ("description".equals(localName)) {
-				descFlag = true;
-				speed.add(attributes.getValue("speed"));
-				gender.add(attributes.getValue("gender"));
-				extended.add(attributes.getValue("extended"));
-				/*
-				 * } else if ("addition".equals(localName)) { additionFlag =
-				 * true; additionsSpeed.add(attributes.getValue("speed"));
-				 * additionsGender.add(attributes.getValue("gender"));
-				 */
-			} else if ("wave".equals(localName)) {
-				waveFlag = true;
-				waveLocal.add(attributes.getValue("local"));
-			}
-
-		}
-
-		@Override
-		public void characters(char[] ch, int start, int length)
-				throws SAXException {
-			if (startFlag) {
-				buf.append(ch, start, length);
-			} else if (durationFlag) {
-				buf.append(ch, start, length);
-			} else if (descFlag) {
-				buf.append(ch, start, length);
-			} else if (additionFlag) {
-				buf.append(ch, start, length);
-			} else if (waveFlag) {
-				buf.append(ch, start, length);
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			if ("start".equals(localName)) {
-				startFlag = false;
-				start = buf.toString();
-				buf.delete(0, buf.length());
-			} else if ("duration".equals(localName)) {
-				durationFlag = false;
-				duration = buf.toString();
-				buf.delete(0, buf.length());
-			} else if ("description".equals(localName)) {
-				descFlag = false;
-				desc.add(buf.toString());
-				lang.add(langStack.peek());
-				buf.delete(0, buf.length());
-				/*
-				 * } else if ("addition".equals(localName)) { additionFlag =
-				 * false; additions.add(buf.toString());
-				 * additionsLang.add(langStack.peek()); buf.delete(0,
-				 * buf.length());
-				 */
-			} else if ("wave".equals(localName)) {
-				waveFlag = false;
-				// waveLang.add(langStack.peek()); //TODO
-				buf.delete(0, buf.length());
-			} else if ("item".equals(localName)) {
-
-				for (int i = 0; i < desc.size(); i++) {
-					MetadataImpl mi = new MetadataImpl(start, duration, desc
-							.get(i), lang.get(i), importance, speed.get(i),
-							gender.get(i), extended.get(i));
-
-					/*
-					 * for (int j = 0; j < additions.size(); j++) { if
-					 * (additionsLang.get(j).equals(lang.get(i))) {
-					 * mi.setAddition(additions.get(j));
-					 * mi.setAdditionGender(additionsGender.get(j));
-					 * mi.setAdditionSpeed(additionsSpeed.get(j)); } }
-					 */
-
-					for (int j = 0; j < waveLocal.size(); j++) {
-						// TODO lang
-						mi.setWavLocal(waveLocal.get(j));
-					}
-
-					// System.out.println(start + ", " + duration + ", " +
-					// desc.get(i) + ", " + lang.get(i));
-
-					Key key = new Key(getEntry().getDocumentation(), lang
-							.get(i));
-
-					ArrayList<IMetadata> list = metadataList.get(key);
-
-					if (list == null) {
-						list = new ArrayList<IMetadata>();
-						metadataList.put(key, list);
-					}
-					list.add(mi);
-				}
-				super.endElement(uri, localName, qName);
-			}
-		}
-	}
-
-	private void readFile() {
-		for (int i = 0; i < entries.size(); i++) {
-			IXMLInfo entry = entries.get(i);
-
-			AllHandler ah = new AllHandler(entry);
-			entry.setContentHandler(ah);
-			try {
-				entry.startSAX();
-			} catch (XMLStoreException e) {
-				e.printStackTrace();
-			} catch (SAXException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	public void setLocale(Locale locale) {
-		this.locale = locale;
-	}
-
-	ArrayList<ArrayList<IMetadata>> alternatives;
-
-	public void prepareMetadata() {
-		prepareMetadata(this.locale);
-	}
-
-	public void prepareMetadata(Locale locale) {
-		Set<Key> keys = metadataList.keySet();
-		alternatives = new ArrayList<ArrayList<IMetadata>>();
-		for (Iterator<Key> i = keys.iterator(); i.hasNext();) {
-			Key key = i.next();
-			if (key.lang.equals(locale.getLanguage())) {
-				alternatives.add(metadataList.get(key));
-			}
-		}
-		if (alternatives.size() > 0)
-			setMetadata(alternatives.get(0));
-	}
-
-	public void setMetadata(ArrayList<IMetadata> metadata) {
-		this.metadata = metadata;
-	}
-
-	public IMetadata getItem(int index) {
-		if (0 <= index && index < metadata.size())
-			return metadata.get(index);
-		return null;
-	}
-
-	public ArrayList<IMetadata> getAllItems() {
-		return metadata;
-	}
-
-	public int getIndex(int position) {
-		if (metadata == null)
-			return 0;
-
-		int ret = 0;
-		for (int i = 0; i < metadata.size(); i++) {
-			if (metadata.get(i).getStartTime() >= position) {
-				ret = i - 1;
-				return ret;
-			}
-		}
-		return metadata.size() - 1;
-	}
-
-	public int getSize() {
-		if (metadata == null)
-			return 0;
-		return metadata.size();
-	}
-
-	public boolean hasMetadata() {
-		if (metadata == null)
-			return false;
-		return metadata.size() > 0;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java
deleted file mode 100644
index fe891cd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.preferences;
-
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-public class ADPreferenceInitializer extends AbstractPreferenceInitializer {
-
-	@Override
-	public void initializeDefaultPreferences() {
-		IPreferenceStore store = DescriptionPlugin.getDefault()
-				.getPreferenceStore();
-		store.setDefault(DescriptionPlugin.PREF_ENGINE, TTSRegistry
-				.getDefaultEngine());
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
deleted file mode 100644
index 99c536d..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.preferences;
-
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.RadioGroupFieldEditor;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-public class ADPreferencePage extends FieldEditorPreferencePage implements
-		IWorkbenchPreferencePage {
-
-	public ADPreferencePage() {
-		super(GRID);
-		setPreferenceStore(DescriptionPlugin.getDefault().getPreferenceStore());
-		setDescription(Messages.AudioDescription_preference_title); 
-	}
-
-	@Override
-	public void createFieldEditors() {
-		RadioGroupFieldEditor rgfe;
-		String[][] labelAndIds = TTSRegistry.getLabelAndIds();
-		addField(rgfe = new RadioGroupFieldEditor(
-				DescriptionPlugin.PREF_ENGINE,
-				Messages.AudioDescription_voice_engine, 1, labelAndIds, 
-				getFieldEditorParent()));
-		Composite c = rgfe.getRadioBoxControl(getFieldEditorParent());
-		for (int i = 0; i < labelAndIds.length; i++) {
-			if (labelAndIds[i][1].length() == 0) {
-				c.getChildren()[i].setEnabled(false);
-			}
-		}
-	}
-
-	public void init(IWorkbench workbench) {
-
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java
deleted file mode 100644
index 91e7f3f..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.util;
-
-public class TimeFormatUtil {
-
-	public static String getTimeString(double time) {
-		int mi, se, ms;
-		int intTime = (int) (time * 100);
-
-		ms = intTime % 100;
-		intTime /= 100;
-		se = intTime % 60;
-		intTime /= 60;
-		mi = intTime;
-
-		return (mi < 10 ? "0" : "") + mi + ":" + (se < 10 ? "0" : "") + se
-				+ "." + (ms < 10 ? "0" : "") + ms;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
deleted file mode 100644
index 81c19b6..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.views;
-
-import org.eclipse.actf.ai.audio.description.impl.MetadataContentProvider;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-public class DescriptionView extends ViewPart {
-	public static final String ID = "org.eclipse.actf.ai.audio.description.views.DescriptionView";
-
-	private VideoStatusViewer status;
-
-	private TableViewer tableViewer;
-
-	@Override
-	public void createPartControl(Composite parent) {
-		initView(parent);
-		DescriptionPlugin.getDefault().setDescriptionView(this);
-	}
-
-	private void initView(Composite parent) {
-		GridLayout gLayout = new GridLayout(1, true);
-		gLayout.marginWidth = 0;
-		gLayout.marginHeight = 0;
-		parent.setLayout(gLayout);
-
-		status = new VideoStatusViewer(parent);
-
-		tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
-				| SWT.V_SCROLL | SWT.BORDER);
-		MetadataContentProvider provider = new MetadataContentProvider();
-		tableViewer.setContentProvider(provider);
-		tableViewer.setLabelProvider(provider);
-
-		Table table = tableViewer.getTable();
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		TableColumn tableColumnProperty = new TableColumn(table, SWT.LEFT);
-		tableColumnProperty.setText(Messages.AudioDescription_view_time);
-		tableColumnProperty.setWidth(70);
-		TableColumn tableColumnValue = new TableColumn(table, SWT.LEFT);
-		tableColumnValue.setText(Messages.AudioDescription_view_desc);
-		tableColumnValue.setWidth(130);
-
-		GridData data = new GridData(GridData.FILL_BOTH);
-		table.setLayoutData(data);
-	}
-
-	@Override
-	public void setFocus() {
-
-	}
-
-	public void setTime(double time) {
-		status.setTime(time);
-	}
-
-	public void setInput(Object input) {
-		if (tableViewer.getTable().isDisposed())
-			return;
-		tableViewer.setInput(input);
-	}
-
-	public void setIndex(int index) {
-		if (tableViewer.getTable().isDisposed())
-			return;
-		tableViewer.getTable().select(index);
-	}
-
-	public void setEnable(boolean b) {
-		status.setEnable(b);
-	}
-
-	public boolean toggleViewShowing() {
-		IWorkbenchPage page = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow().getActivePage();
-		IViewPart part = page.findView(ID);
-
-		if (part != null) {
-			page.hideView(part);
-			return false;
-		} else {
-			try {
-				page.showView(ID);
-				return true;
-			} catch (PartInitException e) {
-				e.printStackTrace();
-			}
-		}
-		return false;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
deleted file mode 100644
index c1fadb6..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.views;
-
-import org.eclipse.actf.ai.audio.description.util.TimeFormatUtil;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-public class VideoStatusViewer {
-
-	private Composite parent;
-	private Label status;
-	private boolean enable = false;
-	private String timeText;
-
-	public VideoStatusViewer(Composite parent) {
-		this.parent = parent;
-		initialize();
-	}
-
-	public void initialize() {
-		status = new Label(parent, SWT.NONE);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		status.setLayoutData(data);
-		status.setAlignment(SWT.RIGHT);
-		setTime(0);
-		enable = DescriptionPlugin.getDefault().getEnable();
-	}
-
-	public void setTime(double time) {
-		timeText = TimeFormatUtil.getTimeString(time);
-		refreshText();
-	}
-
-	private void refreshText() {
-		if (status.isDisposed())
-			return;
-		if (enable) {
-			status.setText(Messages.AudioDescription_view_enable
-					+ " " + timeText);
-		} else {
-			status.setText(Messages.AudioDescription_view_notEnable
-					+ " " + timeText);
-		}
-	}
-
-	public void setEnable(boolean b) {
-		enable = b;
-		refreshText();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java
deleted file mode 100644
index 4a03356..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 2008 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.audio.description;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Locale;
-
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.audio.description.impl.MetadataManager;
-import org.eclipse.actf.ai.audio.description.impl.MetadataProviderImpl;
-import org.eclipse.actf.ai.audio.description.views.DescriptionView;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-import org.eclipse.actf.ai.tts.AbstractUIPluginForTTS;
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle. And this provides
- * information of audio description and TTS function to speak the description.
- */
-public class DescriptionPlugin extends AbstractUIPluginForTTS implements
-		IPropertyChangeListener, IVoiceEventListener {
-
-	/**
-	 * The plug-in ID.
-	 */
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.audio.description";
-
-	/**
-	 * The preferences ID of TTS engine for audio description.
-	 */
-	public static final String PREF_ENGINE = "AudioDescriptionTTSEngine";
-
-	/*
-	 * The shared instance.
-	 */
-	private static DescriptionPlugin plugin;
-
-	/*
-	 * The switch weather enable or disable audio description speaking.
-	 */
-	private boolean enable = true;
-
-	/*
-	 * The current active audio description manager. If the target page has no
-	 * audio description then this should be null.
-	 */
-	private IMetadataProvider activeProvider;
-
-	/*
-	 * The instance of TTS engine for audio description.
-	 */
-	private ITTSEngine engine;
-
-	/**
-	 * The constructor
-	 */
-	public DescriptionPlugin() {
-		plugin = this;
-	}
-
-	private IVoiceEventListener listener;
-	
-	/**
-	 * @param url
-	 *            The URL string which determines audio description files in the
-	 *            XMLStore
-	 * @see org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil#getXMLStoreService
-	 * @return metadata information
-	 */
-	public IMetadataProvider getMetadata(String url) {
-		IXMLStoreService service = XMLStoreServiceUtil
-				.getXMLStoreService();
-		IXMLStore store = service.getRootStore();
-		IXMLSelector selector1 = service.getSelectorWithDocElem("puits",
-				"urn:puits");
-		System.out.println(url);
-		IXMLSelector selector2 = service.getSelectorWithURI(url);
-		store = store.specify(selector1);
-		store = store.specify(selector2);
-
-		ArrayList<IXMLInfo> list = new ArrayList<IXMLInfo>();
-		for (Iterator<IXMLInfo> i = store.getInfoIterator(); i.hasNext();) {
-			list.add(i.next());
-		}
-		if (list.size() == 0)
-			return null;
-		MetadataProviderImpl provider = new MetadataProviderImpl(list);
-		if (provider != null) {
-			provider.reload();
-			provider.setLocale(Locale.getDefault());
-			provider.prepareMetadata();
-		}
-		return provider;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		initialize();
-	}
-
-	/**
-	 * The initializer of the plug-in.
-	 */
-	private void initialize() {
-		engine = newTTSEngine();
-		DescriptionPlugin.getDefault().addPropertyChangeListener(this);
-	}
-
-	/**
-	 * @return TTS engine using the preference value
-	 * @see #engine
-	 */
-	private ITTSEngine newTTSEngine() {
-		ITTSEngine engine;
-		String e = DescriptionPlugin.getDefault().getPreferenceStore()
-				.getString(DescriptionPlugin.PREF_ENGINE);
-
-		// TODO
-		if (e.equals("org.eclipse.actf.ai.screenreader.jaws"))
-			return null;
-		engine = TTSRegistry.createTTSEngine(e);
-		if (engine != null){
-			engine.setSpeed(50);
-			engine.setEventListener(this);
-		}
-		return engine;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.voice.internal.AbstractPreferenceUIPlugin#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-	 */
-	@Override
-	public void propertyChange(PropertyChangeEvent event) {
-		if (DescriptionPlugin.PREF_ENGINE.equals(event.getProperty())) {
-			if (null != engine) {
-				engine.stop();
-				engine.dispose();
-				engine = newTTSEngine();
-			}
-		}
-	}
-
-	/**
-	 * @return instance of TTS engine.
-	 */
-	public ITTSEngine getTTSEngine() {
-		return engine;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static DescriptionPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * The instance of the view.
-	 */
-	private DescriptionView view;
-
-	/**
-	 * @param view
-	 *            Keep the instance of the view to share the instance.
-	 */
-	public void setDescriptionView(DescriptionView view) {
-		this.view = view;
-	}
-
-	/**
-	 * @return shared instance of the view.
-	 */
-	public DescriptionView getDescriptionView() {
-		return view;
-	}
-
-	/**
-	 * @param flag
-	 *            The switch to enable/disable
-	 * @return The status of the audio description plug-in
-	 * @see IMediaControl.STATUS_NOT_AVAILABLE
-	 * @see IMediaControl.STATUS_ON
-	 * @see IMediaControl.STATUS_OFF
-	 */
-	public int setEnable(boolean flag) {
-		if (!isAvailable()) {
-			enable = false;
-			return IMediaControl.STATUS_NOT_AVAILABLE;
-		}
-
-		enable = flag;
-		getDescriptionView().setEnable(enable);
-		if (enable) {
-			return IMediaControl.STATUS_ON;
-		} else {
-			return IMediaControl.STATUS_OFF;
-		}
-	}
-
-	/**
-	 * @return The availability of the plug-in. If there is no active metadata
-	 *         manager then this returns false.
-	 * @see #setActiveMetadataProvider(MetadataManager)
-	 */
-	public boolean isAvailable() {
-		if (activeProvider == null)
-			return false;
-		return activeProvider.hasMetadata();
-	}
-
-	/**
-	 * @return The availability of TTS engine.
-	 */
-	public boolean canSpeak() {
-		return engine != null;
-	}
-
-	/**
-	 * @param str
-	 *            The string to be spoken.
-	 */
-	public void speak(String str, int speed, String gender) {
-		if (engine != null){
-			engine.setEventListener(this);
-			engine.setGender(gender);
-			engine.setSpeed(speed);
-			engine.speak(str, ITTSEngine.TTSFLAG_FLUSH, -1);
-		}
-	}
-
-	public void addSpeakIndex(int index){
-		if(engine != null){
-			engine.speak("",ITTSEngine.TTSFLAG_DEFAULT,index);
-		}
-	}
-	
-	public void setVoiceEventListener(IVoiceEventListener listener){
-		this.listener = listener;
-	}
-	
-	/**
-	 * Toggle the enable and disable of the plug-in.
-	 * 
-	 * @return The status of the plug-in.
-	 * @see #setEnable(boolean)
-	 */
-	public int toggleEnable() {
-		return setEnable(!getEnable());
-	}
-
-	/**
-	 * @return The value of enable/disable
-	 */
-	public boolean getEnable() {
-		return enable;
-	}
-
-	/**
-	 * @param manager
-	 *            The active metadata provider to know the metadata avilability
-	 */
-	public void setActiveMetadataProvider(IMetadataProvider provider) {
-		this.activeProvider = provider;
-	}
-
-	/**
-	 * @param key
-	 *            The key for the resource string.
-	 * @return The resource string.
-	 */
-	public static String getString(String key) {
-		return Platform.getResourceString(getDefault().getBundle(), key);
-	}
-
-	public void indexReceived(int index) {
-		if(listener!=null){
-			listener.indexReceived(index);
-		}
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
deleted file mode 100644
index 1057884..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.audio.description;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class Messages extends NLS {
-
-	private static final String BUNDLE_NAME = "messages";//$NON-NLS-1$
-
-	private Messages() {
-		// Do not instantiate
-	}
-
-	public static String AudioDescription_view_time;
-	public static String AudioDescription_view_desc;
-	public static String AudioDescription_view_enable;
-	public static String AudioDescription_view_notEnable;
-	public static String AudioDescription_preference_title;
-	public static String AudioDescription_voice_engine;
-	public static String Metadata_available;
-	public static String AudioDescription_on;
-	public static String AudioDescription_off;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.io/.classpath b/plugins/org.eclipse.actf.ai.audio.io/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.audio.io/.project b/plugins/org.eclipse.actf.ai.audio.io/.project
deleted file mode 100644
index cc0b860..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.audio.io</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.audio.io/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.actf.ai.audio.io/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 5675a69..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Jan 06 15:25:26 JST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF
deleted file mode 100644
index c5ee6b1..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Audio IO Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.audio.io
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.audio.io.impl.Activator
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.audio.io
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.actf.ai.audio.io/about.html b/plugins/org.eclipse.actf.ai.audio.io/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.io/build.properties b/plugins/org.eclipse.actf.ai.audio.io/build.properties
deleted file mode 100644
index e1942be..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java
deleted file mode 100644
index a336e2d..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import java.net.URL;
-
-import javax.sound.sampled.Mixer;
-
-import org.eclipse.actf.ai.audio.io.impl.AudioFileReader;
-import org.eclipse.actf.ai.audio.io.impl.AudioPipe;
-import org.eclipse.actf.ai.audio.io.impl.LoopedAudioPipe;
-import org.eclipse.actf.ai.audio.io.impl.PlaybackDevice;
-import org.eclipse.actf.ai.audio.io.impl.RecordDevice;
-
-/**
- * This audio IO utilities enable to play audio stream in form of pipe-like
- * interface. The following is a sample code to play audio file for a second.
- * Firstly, a reader and a writer are created then these are combined with a
- * pipe. Secondly, the pipe is initialized to play then the pipe runs for a
- * second.
- * 
- * <pre>
- * IAudioReader reader = AudioFactory.createAudioReader(&quot;*****.wav&quot;);
- * IAudioWriter writer = AudioFactory.createDefaultWriter();
- * IAudioPipe pipe = AudioFactory.createLoopedAudioPipe(reader, writer);
- * // buffer size for reading (in milli seconds)
- * pipe.setBufferSize(100);
- * 
- * // interval time to try writing (in milli seconds)
- * pipe.setInterval(1);
- * 
- * // Create new thread and start playing. 
- * // The pipe automatically opens reader and writer.
- * pipe.prepare();
- * 
- * pipe.start();
- * 
- * try {
- * 	Thread.sleep(1000);
- * } catch (InterruptedException e) {
- * 	e.printStackTrace();
- * }
- * 
- * pipe.stop();
- * </pre>
- */
-public class AudioFactory {
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the file. In the default Java environment this can read files in format
-	 * of WAVE and AIFF. You can extends the supported formats by Java sound
-	 * SPI.
-	 * 
-	 * @param file
-	 *            the audio file to be read.
-	 * @return new instance of IAudioReaer.
-	 */
-	public static IAudioReader createAudioReader(String file) {
-		return new AudioFileReader(file);
-	}
-
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the URL.
-	 * 
-	 * @param url
-	 *            the audio file to be read.
-	 * @return new instance of IAudioReader.
-	 * @see #createAudioReader(String)
-	 */
-	public static IAudioReader createAudioReader(URL url) {
-		return new AudioFileReader(url);
-	}
-
-	/**
-	 * This method creates an IAudioWriter which manages the default system play
-	 * back device.
-	 * 
-	 * @return new instance of IAudioWriter
-	 */
-	public static IAudioWriter createDefaultWriter() {
-		return new PlaybackDevice();
-	}
-
-	/**
-	 * This methods creates an IAudioPipe which manages the audio stream between
-	 * <i>reader</i> and <i>writer</i>.
-	 * 
-	 * @param reader
-	 *            the IAudioReader provides an audio stream.
-	 * @param writer
-	 *            the IAudioWriter process the audio stream.
-	 * @return new instance of IAudioPipe.
-	 */
-	public static IAudioPipe createAudioPipe(IAudioReader reader,
-			IAudioWriter writer) {
-		return new AudioPipe(reader, writer);
-	}
-
-	/**
-	 * This method creates an IAudioPipe which manages the audio stream between
-	 * <i>reader</i> and <i>writer</i>. The pipe provides a repeating audio
-	 * stream, so it has no ending.
-	 * 
-	 * @param reader
-	 *            the IAudioReader provides an audio stream.
-	 * @param writer
-	 *            the IAudioWriter process the audio stream.
-	 * @return new instance of IAudioPipe.
-	 */
-	public static IAudioPipe createLoopedAudioPipe(IAudioReader reader,
-			IAudioWriter writer) {
-		return new LoopedAudioPipe(reader, writer);
-	}
-
-	/**
-	 * This method creates an IAudioWriter which manages the play back device
-	 * specified by the <i>mixer</i>.
-	 * 
-	 * @param mixer
-	 *            the Mixer to be used for audio play back.
-	 * @return new instance of IAudioWriter
-	 * @see Mixer
-	 */
-	public static IAudioWriter createAudioWriter(Mixer mixer) {
-		return new PlaybackDevice(mixer);
-	}
-
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the specified recording device.
-	 * 
-	 * @param mixer
-	 *            the Mixer to be used for audio recording.
-	 * @param recordingSmapleRate
-	 *            the recording sampling rate. It might be 8000, 16000, or so
-	 *            on.
-	 * @param recordingChannels
-	 *            the number of recording channel. It might be 1 or 2.
-	 * @return new instance of IAudioReader.
-	 */
-	public static IAudioReader createAudioReader(Mixer mixer,
-			int recordingSmapleRate, int recordingChannels) {
-		return new RecordDevice(mixer, recordingSmapleRate, recordingChannels);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java
deleted file mode 100644
index a36bce4..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * AudioIOException is thrown when some exception occurs in this utilities.
- */
-public class AudioIOException extends Exception {
-
-	/**
-	 * @param string
-	 *            the further message of the exception.
-	 * @param cause
-	 * 			  the reason of the exception.
-	 */
-	public AudioIOException(String string, Throwable cause) {
-		super(string, cause);
-	}
-
-	private static final long serialVersionUID = 1L;
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java
deleted file mode 100644
index e47f960..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * The listener interface for receiving pipe events.
- */
-public interface AudioPipeListener {
-	/**
-	 * Invoke when the audio stream is finished.
-	 * 
-	 * @param pipe
-	 *            the IAudioPipe instance which raises this event.
-	 */
-	void finished(IAudioPipe pipe);
-
-	/**
-	 * Invoke when the play back is stopped.
-	 * 
-	 * @param pipe
-	 *            the IAudioPipe instance which raises this event.
-	 */
-	void stopped(IAudioPipe pipe);
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java
deleted file mode 100644
index 28d537c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import java.nio.ByteOrder;
-
-import javax.sound.sampled.AudioFormat;
-
-/**
- * This utility provides some methods to manage AudioFormat in form of human
- * readable.
- */
-public class AudioUtil {
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of bytes per second in all channels.
-	 */
-	public static int getBytesPerSecondLR(AudioFormat format) {
-		return (int) getBytesPerSecond(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bytes per second in one channel.
-	 */
-	public static int getBytesPerSecond(AudioFormat format) {
-		return (int) getBitsPerSecond(format) / 8;
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bits per second in one channel.
-	 */
-	public static int getBitsPerSecond(AudioFormat format) {
-		return (int) format.getSampleRate() * format.getSampleSizeInBits();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of samples per second in one channel.
-	 */
-	public static int getSamplesPerSecond(AudioFormat format) {
-		return (int) format.getSampleRate();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of samples per second in all channels.
-	 */
-	public static int getSamplesPerSecondLR(AudioFormat format) {
-		return (int) getSamplesPerSecond(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bytes per sample in one channel.
-	 */
-	public static int getBytesPerSample(AudioFormat format) {
-		return format.getSampleSizeInBits() / 8;
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of bytes per sample in all channels.
-	 */
-	public static int getBytesPerSampleLR(AudioFormat format) {
-		return getBytesPerSample(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the ByteOrder of the format.
-	 */
-	public static ByteOrder getEndian(AudioFormat format) {
-		if (format.isBigEndian())
-			return ByteOrder.BIG_ENDIAN;
-		else
-			return ByteOrder.LITTLE_ENDIAN;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java
deleted file mode 100644
index 485391a..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * This interface provides for processing audio stream between a IAudioReader
- * and a IAudioWriter. The simplest implementation provides the function to
- * transfer a audio stream from the IAudioReader to the IAudioWriter. You can
- * creates IAudioPipe that have function to repeat or convert the audio stream.
- * 
- * The pipe should create a thread to manager the time line of the audio stream.
- */
-public interface IAudioPipe {
-	/**
-	 * @param listener
-	 *            the listener to be added.
-	 */
-	void addAudioPipeListener(AudioPipeListener listener);
-
-	/**
-	 * The pipe thread will be processed every <i>interval</i>. The interval
-	 * might be sufficiently-small than the buffer size of the pipe.
-	 * 
-	 * @param milliSeconds
-	 *            the interval time in milliseconds.
-	 * @see #setBufferSize(int)
-	 */
-	void setInterval(int milliSeconds);
-
-	/**
-	 * @param priority
-	 *            the priority of the pipe thread.
-	 * @see Thread#setPriority(int)
-	 */
-	void setPriority(int priority);
-
-	/**
-	 * The pipe will read buffer-size data from the audio stream of the
-	 * IAudioReader at one interval. If you want to stop the audio play back
-	 * immediately when you call {@link #stop()} then you have to set the buffer
-	 * size as small as possible. But this will be coin side of generating noise
-	 * because of the data missing for the play back device.
-	 * 
-	 * @param milliSeconds
-	 *            the length of the buffer size in milliSeconds.
-	 */
-	void setBufferSize(int milliSeconds);
-
-	/**
-	 * @return whether the pipe is running or not.
-	 */
-	boolean isActive();
-
-	/**
-	 * The pipe opens the IAudioReader and IAudioWriter. Firstly, the pipe gets
-	 * the format of the IAudioReader then the IAudioWriter is opened with the
-	 * format or converted format.
-	 */
-	void prepare();
-
-	/**
-	 * @param delay
-	 *            the delay time to start the pipe in millisecond.
-	 * @see #start()
-	 */
-	void start(int delay);
-
-	/**
-	 * The pipe starts to process the audio stream. This creates a thread.
-	 */
-	void start();
-
-	/**
-	 * The pipe will be stopped. The play back device will be stopped within the
-	 * buffer size. The thread will be terminated.
-	 * 
-	 * @see #setBufferSize(int)
-	 */
-	void stop();
-
-	/**
-	 * This function blocks until the pipe is finished. The pipe will be
-	 * finished when the IAudioReader is finished or {@link #stop()} is called.
-	 */
-	void join();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java
deleted file mode 100644
index ed42668..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-
-/**
- * This interface provides for reading audio data stream. It will read the audio
- * data from file, URL, audio device, and so on.
- */
-public interface IAudioReader {
-
-	/**
-	 * @return the name of the reader.
-	 */
-	String getName();
-
-	/**
-	 * @return the audio format of the audio data.
-	 */
-	AudioFormat getAudioFormat();
-
-	/**
-	 * It returns true when the reader is opened, but an error occurs then
-	 * it returns false.
-	 * 
-	 * @return Whether the audio reader can read the data or not.
-	 */
-	boolean canRead();
-
-	/**
-	 * Open the audio stream.
-	 * 
-	 * @throws AudioIOException
-	 */
-	void open() throws AudioIOException;
-
-	/**
-	 * Close the audio stream.
-	 */
-	void close();
-
-	/**
-	 * This copies the audio stream from the source to the buffer. The reading
-	 * cursor will be increased. When the cursor is reached to the end, the
-	 * reader will be closed.
-	 * 
-	 * @param data
-	 *            the buffer to copy the audio data.
-	 * @param offset
-	 *            the offset of the buffer to copy.
-	 * @param length
-	 *            the length of the audio data to copy.
-	 * @return the number of the actual read.
-	 * @throws AudioIOException
-	 * @see #isClosed()
-	 */
-	int read(byte[] data, int offset, int length) throws AudioIOException;
-
-	/**
-	 * @return whether the reader is closed or not.
-	 */
-	boolean isClosed();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java
deleted file mode 100644
index 3c6e965..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-
-/**
- * This interface provides for writing audio data stream. It will write the
- * audio data to file, audio device, another pipe, and so on.
- */
-public interface IAudioWriter {
-
-	/**
-	 * @return the name of the writer.
-	 */
-	String getName();
-
-	/**
-	 * This copies the audio stream from the buffer to the destination.
-	 * 
-	 * @param data
-	 *            the buffer to copy the audio data.
-	 * @param offset
-	 *            the offset of the buffer to copy.
-	 * @param length
-	 *            the length of the audio data to copy.
-	 * @return the number of the actual write.
-	 * @throws AudioIOException
-	 */
-	int write(byte[] data, int offset, int length) throws AudioIOException;
-
-	/**
-	 * @return whether the writer can write to the destination or not.
-	 */
-	boolean canWrite();
-
-	/**
-	 * The writer open the destination in specified format.
-	 * 
-	 * @param format
-	 *            the format to be opened.
-	 * @throws AudioIOException
-	 */
-	void open(AudioFormat format) throws AudioIOException;
-
-	/**
-	 * The writer close the destination.
-	 */
-	void close();
-
-	/**
-	 * @return whether the destination is closed or not.
-	 */
-	boolean isClosed();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java
deleted file mode 100644
index 8afc252..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.io.impl;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.audio.io";
-
-	// The shared instance
-	private static Activator plugin;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java
deleted file mode 100644
index 3ac5f14..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-
-public class AudioFileReader implements IAudioReader {
-
-	private File file;
-
-	private URL url;
-
-	private AudioFormat format;
-
-	private AudioInputStream stream;
-
-	private boolean opened = false;
-
-	private boolean closed = false;
-
-	public AudioFileReader(String fileName) {
-		setFile(fileName);
-	}
-
-	public AudioFileReader(URL url) {
-		setURL(url);
-	}
-
-	public String getName() {
-		if (file != null)
-			return "File \"" + file.getName() + "\"";
-		if (url != null)
-			return "URL \"" + url.getPath() + "\"";
-		return "";
-	}
-
-	private void setFile(String fileName) {
-		this.file = new File(fileName);
-	}
-
-	private void setURL(URL url) {
-		this.url = url;
-	}
-
-	public boolean canRead() {
-		try {
-			if (file != null)
-				AudioSystem.getAudioInputStream(file);
-			if (url != null)
-				AudioSystem.getAudioFileFormat(url);
-			return true;
-		} catch (UnsupportedAudioFileException e) {
-		} catch (IOException e) {
-		}
-		return false;
-	}
-
-	synchronized public void open() throws AudioIOException {
-		try {
-			if (file != null)
-				stream = AudioSystem.getAudioInputStream(file);
-			if (url != null)
-				stream = AudioSystem.getAudioInputStream(url);
-			
-			// AudioFormat baseFormat = stream.getFormat();
-			// 
-			// AudioFormat decodedFormat = new AudioFormat(baseFormat
-			// .getEncoding(), baseFormat.getSampleRate(), 16, baseFormat
-			// .getChannels(), baseFormat.getChannels() * 2, baseFormat
-			// .getSampleRate(), false);
-			//
-			// stream = AudioSystem.getAudioInputStream(decodedFormat, stream);
-
-			format = stream.getFormat();
-			opened = true;
-			closed = false;
-		} catch (UnsupportedAudioFileException e) {
-			throw new AudioIOException("Unsupported audio file type.", e);
-		} catch (IOException e) {
-			throw new AudioIOException(e.toString(), e);
-		}
-	}
-
-	public AudioFormat getAudioFormat() {
-		return format;
-	}
-
-	synchronized public int read(byte[] data, int offset, int length)
-			throws AudioIOException {
-		if (!opened) {
-			throw new AudioIOException("This is not opened.", null);
-		}
-		try {
-			int nBytesRead = stream.read(data, offset, length);
-			if (nBytesRead == -1) {
-				stream.close();
-				opened = false;
-				closed = true;
-				nBytesRead = 0;
-			}
-			return nBytesRead;
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return 0;
-	}
-
-	synchronized public void close() {
-		try {
-			if (stream != null)
-				stream.close();
-		} catch (IOException e) {
-		}
-		opened = false;
-		closed = true;
-	}
-
-	public boolean isClosed() {
-		return closed;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java
deleted file mode 100644
index cfae3f9..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.ShortBuffer;
-import java.util.ArrayList;
-import java.util.Date;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.AudioPipeListener;
-import org.eclipse.actf.ai.audio.io.AudioUtil;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class AudioPipe implements IAudioPipe {
-
-	private IAudioReader reader;
-
-	private IAudioWriter writer;
-
-	private AudioFormat format;
-
-	private Thread thread;
-
-	private Runnable runner;
-
-	private byte[] buffer;
-
-	private int bufferSize;
-
-	private int interval = 100;
-
-	private int priority = Thread.NORM_PRIORITY;
-
-	private int bufferSizeInMs = 1000;
-
-	private boolean active;
-
-	private boolean waiting;
-
-	private boolean stopFlag = false;
-
-	private boolean stopFlag2 = false;
-
-	private ArrayList<AudioPipeListener> listeners = new ArrayList<AudioPipeListener>();
-
-	public AudioPipe(IAudioReader reader, IAudioWriter writer) {
-		this.reader = reader;
-		this.writer = writer;
-		runner = new ReaderWriterRunner();
-	}
-
-	public void addAudioPipeListener(AudioPipeListener listener) {
-		listeners.add(listener);
-	}
-
-	class ReaderWriterRunner implements Runnable {
-		private void fadeout(byte[] buffer, int nBytesRead) {
-			int bps = AudioUtil.getBytesPerSample(format);
-
-			ByteBuffer bb = ByteBuffer.wrap(buffer);
-			ShortBuffer sb = null;
-			if (format.isBigEndian())
-				bb.order(ByteOrder.BIG_ENDIAN);
-			else
-				bb.order(ByteOrder.LITTLE_ENDIAN);
-
-			if (bps == 2)
-				sb = bb.asShortBuffer();
-
-			int len = nBytesRead / bps;
-
-			for (int i = 0; i < len; i++) {
-				double k = (double) (len - i) / (double) len;
-				if (bps == 1)
-					bb.put(i, (byte) (bb.get(i) * k));
-				else
-					sb.put(i, (short) (sb.get(i) * k));
-			}
-		}
-
-		public void run() {
-			try {
-				while (true) {
-					if (reader.isClosed())
-						break;
-
-					int nBytesRead = reader.read(buffer, 0, buffer.length);
-
-					int nBytesWritten = 0;
-					do {
-						if (writer.isClosed()) {
-							active = false;
-							fireStopped();
-							return;
-						}
-						if (stopFlag) {
-							fadeout(buffer, nBytesRead);
-							stopFlag = false;
-							stopFlag2 = true;
-						}
-						int temp = writer.write(buffer, nBytesWritten,
-								nBytesRead);
-						nBytesWritten += temp;
-						nBytesRead -= temp;
-						sleep();
-					} while (nBytesRead > 0);
-
-					if (stopFlag2) {
-						stopFlag2 = false;
-						writer.close();
-					}
-				}
-				writer.close();
-			} catch (AudioIOException e) {
-				writer.close();
-			} catch (Exception e) {
-				e.printStackTrace();
-				writer.close();
-			}
-			active = false;
-			fireFinished();
-		}
-	}
-
-	private void fireFinished() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).finished(this);
-		}
-	}
-
-	private void fireStopped() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).stopped(this);
-		}
-	}
-
-	synchronized public void setInterval(int interval) {
-		this.interval = interval;
-	}
-
-	synchronized public void setPriority(int priority) {
-		this.priority = priority;
-		if (thread != null)
-			thread.setPriority(priority);
-	}
-
-	public void prepare() {
-		try {
-			reader.open();
-			format = reader.getAudioFormat();
-			writer.open(format);
-		} catch (AudioIOException e) {
-			e.printStackTrace();
-			return;
-		}
-	}
-
-	public void start() {
-		start(0);
-	}
-
-	public void start(final int delay) {
-		if (active || waiting)
-			return;
-		waiting = true;
-		thread = new Thread(new Runnable() {
-			public void run() {
-				long s = (new Date()).getTime();
-
-				while (true) {
-					long n = (new Date()).getTime();
-					if (stopFlag) {
-						waiting = false;
-						stopFlag = false;
-						active = false;
-						fireStopped();
-						return;
-					}
-					if (s + delay <= n) {
-						break;
-					}
-					try {
-						Thread.sleep(1);
-					} catch (InterruptedException e) {
-					}
-				}
-
-				while (active) {
-					try {
-						Thread.sleep(1);
-					} catch (InterruptedException e) {
-					}
-				}
-
-				prepare();
-
-				int Bps = AudioUtil.getBytesPerSampleLR(format);
-				bufferSize = AudioUtil.getBytesPerSecondLR(format)
-						* bufferSizeInMs / 1000 / Bps * Bps;
-				buffer = new byte[bufferSize];
-				active = true;
-				waiting = false;
-				runner.run();
-			}
-		});
-		thread.setPriority(priority);
-		thread.setName(reader.getName() + "<->" + writer.getName());
-		thread.start();
-	}
-
-	synchronized private void sleep() {
-		try {
-			Thread.sleep(interval);
-			Thread.yield();
-		} catch (InterruptedException e) {
-		}
-	}
-
-	public boolean isActive() {
-		return active;
-	}
-
-	public void stop() {
-		if (active || waiting)
-			stopFlag = true;
-	}
-
-	public void join() {
-		if (thread == null)
-			return;
-		try {
-			thread.join();
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void setBufferSize(int miliSeconds) {
-		bufferSizeInMs = miliSeconds;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java
deleted file mode 100644
index 68d2531..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.audio.io.AudioPipeListener;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class LoopedAudioPipe implements IAudioPipe, AudioPipeListener {
-
-	IAudioPipe target;
-
-	boolean isActive;
-
-	boolean joining = false;
-
-	private ArrayList<AudioPipeListener> listeners = new ArrayList<AudioPipeListener>();
-
-	public LoopedAudioPipe(IAudioReader reader, IAudioWriter writer) {
-		target = new AudioPipe(reader, writer);
-		target.addAudioPipeListener(this);
-	}
-
-	public void addAudioPipeListener(AudioPipeListener listener) {
-		listeners.add(listener);
-	}
-
-	public boolean isActive() {
-		return isActive;
-	}
-
-	public void join() {
-		joining = true;
-		target.join();
-		fireFinished();
-	}
-
-	public void setBufferSize(int miliSeconds) {
-		target.setBufferSize(miliSeconds);
-	}
-
-	public void setInterval(int interval) {
-		target.setInterval(interval);
-	}
-
-	public void setPriority(int priority) {
-		target.setPriority(priority);
-	}
-
-	public void prepare() {
-		target.prepare();
-	}
-
-	public void start() {
-		start(0);
-	}
-
-	public void start(int delay) {
-		target.start(delay);
-		isActive = true;
-		joining = false;
-	}
-
-	public void stop() {
-		target.stop();
-		isActive = false;
-		fireStopped();
-	}
-
-	private void fireFinished() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).finished(this);
-		}
-	}
-
-	private void fireStopped() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).stopped(this);
-		}
-	}
-
-	public void finished(IAudioPipe pipe) {
-		if (!joining)
-			pipe.start();
-	}
-
-	public void stopped(IAudioPipe pipe) {
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java
deleted file mode 100644
index a8f6bc0..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
-import javax.sound.sampled.SourceDataLine;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class PlaybackDevice implements IAudioWriter {
-
-	private Mixer playbackMixer;
-
-	private SourceDataLine playbackLine;
-
-	private int limit;
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof PlaybackDevice) {
-			return playbackMixer.equals(((PlaybackDevice) o).playbackMixer);
-		}
-		return false;
-	}
-
-	public PlaybackDevice(Mixer mixer) {
-		this.playbackMixer = mixer;
-	}
-
-	public PlaybackDevice() {
-		this.playbackMixer = null;
-	}
-
-	public String getName() {
-		if (playbackMixer != null)
-			return "Device \"" + playbackMixer.getMixerInfo().getName() + "\"";
-		else
-			return "Device \"default\"";
-	}
-
-	synchronized public void close() {
-		if (playbackLine != null) {
-			playbackLine.drain();
-			playbackLine.close();
-		}
-	}
-
-	public boolean isClosed() {
-		if (playbackLine == null)
-			return true;
-		return !playbackLine.isOpen();
-	}
-
-	public boolean canWrite() {
-		return true;
-	}
-
-	synchronized public void open(AudioFormat format) throws AudioIOException {
-
-		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
-
-		try {
-			if (playbackMixer != null)
-				playbackLine = (SourceDataLine) playbackMixer.getLine(info);
-			else
-				playbackLine = (SourceDataLine) AudioSystem.getLine(info);
-
-			playbackLine.open();
-
-			limit = playbackLine.available() / 10 * 5;
-
-			playbackLine.start();
-		} catch (LineUnavailableException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	synchronized public int write(byte[] data, int offset, int length)
-			throws AudioIOException {
-		if (playbackLine.available() > limit) {
-			return playbackLine.write(data, offset, length);
-		}
-		return 0;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java
deleted file mode 100644
index 139d8a1..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
-import javax.sound.sampled.TargetDataLine;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-
-public class RecordDevice implements IAudioReader {
-
-	private Mixer recordMixer;
-
-	private AudioFormat format;
-
-	private TargetDataLine recordLine;
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof RecordDevice) {
-			RecordDevice rd = (RecordDevice) o;
-			if (recordMixer.equals(rd.recordMixer)) {
-				return format.getChannels() == rd.format.getChannels()
-						&& format.getFrameRate() == rd.format.getFrameRate()
-						&& format.getSampleSizeInBits() == rd.format
-								.getSampleSizeInBits();
-			}
-		}
-		return false;
-	}
-
-	public RecordDevice(Mixer mixer, int sampleRate, int channels) {
-		this.recordMixer = mixer;
-		format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sampleRate,
-				16, channels, 2 * channels, sampleRate, false);
-		if (!recordMixer.isLineSupported(new DataLine.Info(
-				TargetDataLine.class, format))) {
-			check(sampleRate, channels);
-		}
-	}
-
-	private void check(int sampleRate, int channels) {
-		AudioFormat temp;
-		int[] samples = new int[] { 48000, 44100, 22050, 16000, 8000 };
-
-		outer: for (int i = 0; i < samples.length; i++) {
-			if (samples[i] < sampleRate) {
-				temp = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
-						samples[i], 16, channels, 2 * channels, samples[i],
-						false);
-				if (recordMixer.isLineSupported(new DataLine.Info(
-						TargetDataLine.class, temp))) {
-					format = temp;
-					break outer;
-				}
-			}
-		}
-	}
-
-	public String getName() {
-		return "Device \"" + recordMixer.getMixerInfo().getName()
-				+ //
-				" (" + (format.getFrameRate() / 1000) + " kHz, "
-				+ format.getChannels() + "ch)" + "\"";
-	}
-
-	public AudioFormat getAudioFormat() {
-		return format;
-	}
-
-	synchronized public void close() {
-		if (recordLine != null)
-			recordLine.close();
-	}
-
-	public boolean isClosed() {
-		return !recordLine.isOpen();
-	}
-
-	public boolean canRead() {
-		DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
-		return recordMixer.isLineSupported(info);
-	}
-
-	synchronized public void open() throws AudioIOException {
-		DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
-
-		try {
-			recordLine = (TargetDataLine) recordMixer.getLine(info);
-			recordLine.open(format);
-			recordLine.start();
-		} catch (LineUnavailableException e) {
-			e.printStackTrace();
-		}
-	}
-
-	synchronized public int read(byte[] data, int offset, int length)
-			throws AudioIOException {
-		return recordLine.read(data, offset, length);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/.classpath b/plugins/org.eclipse.actf.ai.fennec/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.fennec/.cvsignore b/plugins/org.eclipse.actf.ai.fennec/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.fennec/.project b/plugins/org.eclipse.actf.ai.fennec/.project
deleted file mode 100644
index 6a55645..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.fennec</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.fennec/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.actf.ai.fennec/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 6219890..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Jan 06 15:25:42 JST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF
deleted file mode 100644
index 00e077d..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Fennec Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.fennec
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.fennec.FennecPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.core,
- org.eclipse.actf.model.ui,
- org.eclipse.actf.model.dom.dombycom,
- org.eclipse.actf.ai.query,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.swt,
- org.eclipse.actf.ui
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.fennec,
- org.eclipse.actf.ai.fennec.treemanager
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.actf.ai.fennec/about.html b/plugins/org.eclipse.actf.ai.fennec/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.fennec/build.properties b/plugins/org.eclipse.actf.ai.fennec/build.properties
deleted file mode 100644
index e1942be..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java
deleted file mode 100644
index 9a0fee7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-/**
- * FennecException is the super class of the exception on processing Fennec
- * metadata. The message text provide a further description of the problem.
- */
-public class FennecException extends Exception {
-	private static final long serialVersionUID = -4473389024467270039L;
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see Exception#Exception(String, Throwable)
-	 */
-	public FennecException(String message, Throwable cause) {
-		super(message, cause);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java
deleted file mode 100644
index c872a1a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-/**
- * This Fennec exception is thrown when a fennec processing is interrupted by
- * some reason. For example, metadata is updated during the processing.
- */
-public class FennecInterruptedException extends FennecException {
-	private static final long serialVersionUID = 503781748413609768L;
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see FennecException#FennecException(String, Throwable)
-	 */
-	public FennecInterruptedException(String message, Throwable cause) {
-		super(message, cause);
-	}
-
-	/**
-	 * @param message
-	 * @see FennecException#FennecException(String, Throwable)
-	 */
-	public FennecInterruptedException(String message) {
-		super(message, null);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java
deleted file mode 100644
index 1bf84ef..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Kentarou FUKUDA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.mediator.FennecMediatorImpl;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-/**
- * Factory to create a instance of IFennecMediator
- */
-public class FennecMediatorFactory {
-
-	/**
-	 * This is the factory method to create a instance of IFennecMediator
-	 * 
-	 * @param webBrowser
-	 *            An instance of {@link IWebBrowserACTF} to mediate.
-	 * @return New instance of IFennecMediator.
-	 */
-	public static IFennecMediator newFennecMediator(IWebBrowserACTF webBrowser) {
-		return new FennecMediatorImpl(webBrowser);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java
deleted file mode 100644
index 4a6245e..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.impl.FennecServiceImpl;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-
-/**
- * This is the factory class of the IFennecService. This class has methods to
- * create a IFennecService instance from a {@link IFennecEntry} and a
- * {@link IDocumentEx}.
- */
-public class FennecServiceFactory {
-	/**
-	 * @param entry
-	 *            the instance of entry of Fennec metadata.
-	 * @param doc
-	 *            the instance of IDocumentEx which will be applied the Fennec
-	 *            metadata.
-	 * @return a new {@link IFennecService} instance.
-	 * @throws FennecException
-	 *             it will be thrown when the specified entry can't be loaded.
-	 */
-	public static IFennecService newFennecService(IFennecEntry entry,
-			IDocumentEx doc) throws FennecException {
-		return new FennecServiceImpl(entry, doc);
-	}
-
-	/**
-	 * This creates a instance of {@link IFennecService} with default Fennec
-	 * meatadata. Default metadata has an attach element for the root element of
-	 * the specified document.
-	 * 
-	 * @param doc
-	 *            the instance of IDocumentEx which will be applied the Fennec
-	 *            metadata.
-	 * @return a new {@link IFennecService} instance.
-	 */
-	public static IFennecService newFennecServiceWithDefaultMetadata(
-			IDocumentEx doc) {
-		return new FennecServiceImpl(doc);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java
deleted file mode 100644
index 191ceac..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec;
-
-import java.io.File;
-
-/**
- * IFennecEntry represents an entry of Fennec metadata. An entry is
- * corresponding to an Fennec file.
- */
-public interface IFennecEntry {
-	/**
-	 * @return the title of the entry specified in the documentation element.
-	 */
-	String getDocumentation();
-
-	/**
-	 * @return whether the entry is for a metadata of user annotations or not.
-	 */
-	boolean isUserEntry();
-
-	/**
-	 * Export the entry to the specified destination file.
-	 * 
-	 * @param dest
-	 *            the destination of the export.
-	 * @return if the export is succeeded then it returns true and failed then
-	 *         false.
-	 */
-	boolean export(File dest);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java
deleted file mode 100644
index eaab812..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-
-/**
- * IFennecMediator interface defines the methods implemented by the mediator
- * class between the web browser and the Fennec service.
- */
-public interface IFennecMediator {
-	/**
-	 * This method creates an instance of ITreeManager by using the metadata
-	 * entry and Fennec service created from the document obtained from the web
-	 * browser and the metadata entry.
-	 * 
-	 * @param entry
-	 *            the instance of the Fennec metadata entry.
-	 * @return the new instance of ITreeManager.
-	 */
-	ITreeManager newTreeManager(IFennecEntry entry);
-
-	/**
-	 * It returns the default Fennec metadta for the document opened in the web
-	 * browser. If there is no metadata for the doument, it returns null.
-	 * 
-	 * @return the Fennec metadata entry.
-	 */
-	IFennecEntry getDefaultFennecEntry();
-
-	/**
-	 * It returns all Fennec metadata for the document opened in the web
-	 * browser.
-	 * 
-	 * @return An array of the Fennec metadata entries.
-	 */
-	IFennecEntry[] getFennecEntries();
-
-	/**
-	 * If the mediator is not needed anymore, this method should be called.
-	 */
-	void release();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java
deleted file mode 100644
index 31d1072..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.util.vocab.IProposition;
-
-/**
- * IFennecService interface defines the methods to manage a document with a
- * Fennec metadata which provides another tree presentation of the document. The
- * service has a position, and the tree presentation is dynamically changed by
- * updating the position. When the position is tried to be updated then the
- * result code of ITreeManager is returned.
- * 
- * @see ITreeManager#NOACTION
- * @see ITreeManager#MOVED
- * @see ITreeManager#CLICKED
- * @see ITreeManager#FOUND
- */
-public interface IFennecService {
-	/**
-	 * The service is not initialized.
-	 */
-	int UNINIT = 0;
-	/**
-	 * The service is available.
-	 */
-	int NORMAL = 1;
-	/**
-	 * The service is in error.
-	 */
-	int ERROR = 1 << 16;
-
-	/**
-	 * @return the status of the service.
-	 * @see #UNINIT
-	 * @see #NORMAL
-	 * @see #ERROR
-	 */
-	int getStatus();
-
-	/**
-	 * @return the ITreeItem instance of the position on the service.
-	 */
-	ITreeItem getLastTreeItem();
-
-	/**
-	 * It returns collected sound objects in the document.
-	 * 
-	 * @return the {@link ISoundControl} instance of the document tree.
-	 * @see ISoundControl
-	 */
-	ISoundControl getSoundControl();
-
-	/**
-	 * It returns collected video objects in the document.
-	 * 
-	 * @return the {@link IVideoControl} instance of the document tree.
-	 */
-	IVideoControl getVideoControl();
-
-	/**
-	 * It returns collected access keys declared in the document.
-	 * 
-	 * @return the {@link IAccessKeyList} instance of the document tree.
-	 */
-	IAccessKeyList getAccessKeyList();
-
-	/**
-	 * It returns Flash objects in the document.
-	 * 
-	 * @return the array of the {@link IFlashNode} instances of the document
-	 *         tree.
-	 */
-	IFlashNode[] getFlashTopNodes();
-
-	/**
-	 * Initialize the service. It creates the root element of the tree
-	 * presentation of the document, and analyzes the document to collect
-	 * objects such as sounds, videos, and access keys in the document.
-	 * 
-	 * @return {@link ITreeManager#MOVED} is returned.
-	 * @throws FennecException
-	 *             it is thrown if the initialization is failed.
-	 */
-	int initialize() throws FennecException;
-
-	/**
-	 * The position will be updated to the specified ITreeItem. You can update
-	 * the position by traversing from the position, {@link #getLastTreeItem()}
-	 * which has a parent and some children. This method is the shortcut of
-	 * moveUpdate(target, true).
-	 * 
-	 * @param target
-	 *            the new position of the tree presentation.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see #moveUpdate(ITreeItem, boolean)
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int moveUpdate(ITreeItem target) throws FennecException;
-
-	/**
-	 * The position will be updated to the specified ITreeItem. If the <i>update</i>
-	 * is false then the children of the current ITreeItem are not updated, the
-	 * children are cached instances. It is valid in static document, but if the
-	 * original document is changed dynamically the children are invalid.
-	 * 
-	 * @param target
-	 *            the new position of the tree presentation.
-	 * @param update
-	 *            whether updating the children of the target or not.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int moveUpdate(ITreeItem target, boolean update) throws FennecException;
-
-	/**
-	 * The position will be updated. This method should be used after clicking
-	 * the target. If the target is disappear by the clicking the position will
-	 * be changed to proper position.
-	 * 
-	 * @param target
-	 *            the target ITreeItem which was clicked.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int clickUpdate(ITreeItem target) throws FennecException;
-
-	/**
-	 * It searches the element which is matched with the specified IProposition
-	 * in forward direction. This service tests
-	 * {@link IProposition#eval(org.eclipse.actf.util.vocab.IEvalTarget)} with
-	 * all elements from the current position in forward direction. If the
-	 * matching is succeeded then it returns.
-	 * 
-	 * @param prop
-	 *            the instance of IProposition to be used for the searching.
-	 * @return
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 * @see IProposition
-	 */
-	int searchForward(IProposition prop) throws FennecException;
-
-	/**
-	 * It searches the element which is matched with the specified IProposition
-	 * in backward direction.
-	 * 
-	 * @param prop
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 * @see #searchForward(IProposition)
-	 */
-	int searchBackward(IProposition prop) throws FennecException;
-
-	/**
-	 * It analyzes the document to collect objects such as sounds, videos, and
-	 * access keys in the document. This analysis is executed in the
-	 * {@link #initialize()}. So it is used when the analysis is failed because
-	 * of loading timing or something.
-	 * 
-	 * @return it returns ITreeManager#NOACTION
-	 * @throws FennecException
-	 */
-	int analyze() throws FennecException;
-
-	/**
-	 * It searches the anchor element specified by <i>target</i>.
-	 * 
-	 * @param target
-	 *            the anchor name to be searched.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int skipToAnchor(String target) throws FennecException;
-
-	// !!FN!!
-	/**
-	 * It expands whole tree of the document. It means all elements in the
-	 * document are scanned. It would take a long time.
-	 * 
-	 * @return the root element of the document.
-	 * @throws FennecException
-	 */
-	ITreeItem expandWholeTree() throws FennecException;
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java
deleted file mode 100644
index fdcd14f..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.autotranslator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.impl.FennecMode;
-import org.eclipse.actf.ai.fennec.impl.TreeItemMark;
-import org.eclipse.actf.ai.fennec.impl.TreeItemFennec;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.model.dom.dombycom.IImageElement;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class AutoTranslator {
-    private static final boolean AUTO_COLLAPSE = true;
-
-    private static final boolean AUTO_INDENT = true;
-
-    private static boolean canCollapse(TreeItemFennec item) {
-        if (true) {
-            return Vocabulary.isReducible().eval(item);
-        } else {
-            if (Vocabulary.hasContent().eval(item))
-                return false;
-            ITreeItem[] cc = item.getChildItems();
-            for (int i = 0; i < cc.length; i++) {
-                TreeItemFennec item2 = (TreeItemFennec) cc[i];
-                if (Vocabulary.hasContent().eval(item2))
-                    return false;
-            }
-            return true;
-        }
-    }
-
-    private static TreeItemFennec simplify(TreeItemFennec item, TreeItemFennec pItem) {
-        if (AUTO_COLLAPSE) {
-            // pattern pItem - item(X) - child => pItem - child
-            if (!Vocabulary.hasContent().eval(item)) {
-                ITreeItem[] cc = item.getChildItems();
-                if (cc.length == 0) {
-                    return null;
-                }
-                if (cc.length == 1) {
-                    TreeItemFennec item2 = (TreeItemFennec) cc[0];
-                    item2.forceParent(pItem);
-                    item2.addMetadata(item);
-                    return item2;
-                }
-            }
-            
-            // pattern item - child(X) - grandChild => item - grandChild
-            ITreeItem[] childItems = item.getChildItems();
-            if (childItems.length == 1) {
-                TreeItemFennec item2 = (TreeItemFennec) childItems[0];
-                if (!Vocabulary.hasContent().eval(item2)){
-                    ITreeItem[] childItems2 = item2.getChildItems();
-                    item.setChildItems(childItems2);
-                    item.addMetadata(item2);
-                }
-            }
-        }
-
-        return item;
-    }
-
-    private static void adjustLabelIndent(TreeItemFennec item) {
-        // TODO
-        //        var itemCount = item._childItems.length;
-        //        if( itemCount>1 ) {
-        //            var heading;
-        //            var topIsLabel = true;
-        //            for( var i=0, child; child=item._childItems[i]; i++ ) {
-        //            if( topIsLabel ) {
-        //                topIsLabel = child._childItems.length ? (i>0) : (i==0);
-        //            }
-        //            if( child.isHeadingNode() ) {
-        //                // Collapse heading node tree
-        //                child._join();
-        //                heading = child._childItems.length==0 ? child : null;
-        //            }
-        //            else if( heading ) {
-        //                // Move child item into heading item children
-        //                heading._childItems.push(child);
-        //                item._childItems.splice(i--,1);
-        //                topIsLabel = false;
-        //                        heading._labelHead = true;
-        //            }
-        //            }
-        //            if( topIsLabel ) {
-        //            // 1st child is a label. Move item 2-n into item 1 children
-        //                    heading = item._childItems[0];
-        //            heading._childItems = item._childItems.splice(1,item._childItems.length-1);
-        //                    heading._labelHead = true;
-        //            }
-        //            if( (item._childItems.length != itemCount) && Options.AUTO_COLLAPSE ) {
-        //            // Re-adjust tree collaption because tree structure has changed
-        //            for( var i=0, child; child=item._childItems[i]; i++ ) {
-        //                child._simplify();
-        //            }
-        //            item._simplify();
-        //            }
-        //        }
-
-    }
-
-    private static List<ITreeItem> buildTreeItemContinued(FennecMode mode, TreeItemFennec item, INodeEx nex, int depth) {
-        List<ITreeItem> childItemList = new ArrayList<ITreeItem>();
-        ITreeItem lastItem = null;
-        
-        if (nex instanceof IFlashNode) {
-            IFlashNode fn = (IFlashNode) nex;
-            nex = fn.getMSAA();
-            lastItem = new TreeItemMark(item, TreeItemMark.MarkType.FLASH_END);
-            
-            if ((nex != null && Vocabulary.getNormalFlashMode() == Vocabulary.FlashMode.NO_FLASH)
-                    || (nex == null && Vocabulary.getWindowlessFlashMode() == Vocabulary.FlashMode.NO_FLASH)) {
-                return childItemList;
-            }
-            
-            if ((nex != null && Vocabulary.getNormalFlashMode() == Vocabulary.FlashMode.FLASH_DOM)
-                    || (nex == null && Vocabulary.getWindowlessFlashMode() == Vocabulary.FlashMode.FLASH_DOM)) {
-                IFlashNode[] translated = fn.translate();
-                for (int i = 0; i < translated.length; i++) {
-                    TreeItemFennec newItem = mode.generateItem(item, translated[i]);
-                    if (newItem == null) continue;
-                    childItemList.add(newItem);
-                }
-                if (Vocabulary.isFlashTopNode().eval(fn)) {
-                    childItemList.add(lastItem);
-                }
-                
-                item.setChildItems(childItemList);
-                return childItemList;
-            }
-        }
-        
-        if (nex instanceof IImageElement) {
-            IImageElement image = (IImageElement) nex;
-            if (image.hasUsemap()) {
-                Element map = image.getMap();
-                if (map == null) return childItemList;
-                NodeList nl = map.getChildNodes();
-                for (int i = 0; i < nl.getLength(); i++) {
-                    Node n = nl.item(i);
-                    if (n instanceof Element) {
-                        TreeItemFennec newItem = mode.generateItem(item, n);
-                        childItemList.add(newItem);
-                    }
-                }
-                item.setChildItems(childItemList);
-                return childItemList;
-            }
-        }
-
-        if (depth <= 0) {
-            item.setChildItems(childItemList);
-            return childItemList;
-        }
-
-        TreeItemFennec childItem = null;
-        NodeList nl = nex.getChildNodes();
-        int len = nl.getLength();
-        boolean hasContent = Vocabulary.hasContent().eval(item);
-        for (int i = 0; i < len; i++) {
-            Node cn = nl.item(i);
-
-            if (hasContent) {
-                childItem = buildTreeItem(mode, item, cn, depth - 1);
-            } else {
-                childItem = buildTreeItem(mode, item, cn, depth);
-            }
-            if (childItem == null)
-                continue;
-
-            if (true && AUTO_COLLAPSE && canCollapse(childItem)) {
-                ITreeItem[] cc = childItem.getChildItems();
-                if ((cc != null) && (cc.length > 0)) {
-                    for (int j = 0; j < cc.length; j++) {
-                        if (!(cc[j] instanceof TreeItemFennec))
-                            continue;
-                        TreeItemFennec temp = (TreeItemFennec) cc[j];
-                        temp.addMetadata(childItem);
-                    }
-                    childItemList.addAll(Arrays.asList(cc));
-                }
-            } else {
-                childItemList.add(childItem);
-            }
-        }
-        
-        if (lastItem != null)
-            childItemList.add(lastItem);
-
-        item.setChildItems(childItemList);
-        return childItemList;
-    }
-
-    private static TreeItemFennec buildTreeItem(FennecMode mode, TreeItemFennec pItem, Node n, int depth) {
-        if (!(n instanceof INodeEx)) {
-            return null;
-        }
-
-        INodeEx  nex = (INodeEx) n;
-
-        if (!Vocabulary.isValidNode().eval(nex)) {
-            return null;
-        }
-
-        TreeItemFennec item = mode.generateItem(pItem, n);
-        if (item == null) return null;
-        buildTreeItemContinued(mode, item, nex, depth);
-
-        if (AUTO_INDENT) {
-            adjustLabelIndent(item);
-        }
-
-        return simplify(item, pItem);
-    }
-
-    public static TreeItemFennec translate(FennecMode mode, TreeItemFennec pItem, Node n) {
-
-        return buildTreeItem(mode, pItem, n, 1);
-    }
-
-    public static TreeItemFennec translateContinued(FennecMode mode, TreeItemFennec item, Node n) {
-        if (!(n instanceof INodeEx))
-            return item;
-        buildTreeItemContinued(mode, item, (INodeEx) n, 2);
-        // item = simplify(item, (TreeItemFennec) item.getParent());
-        return item;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java
deleted file mode 100644
index c640651..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-
-
-abstract class FennecBundleMetadata extends FennecMetadata {
-    private static final FennecMetadata[] emptyChildMetadata = new FennecMetadata[0];
-    protected final FennecMetadata[] childMetadata;
-
-    protected FennecBundleMetadata(FennecServiceImpl fennecService,
-                                 IQuery q, FennecMode mode, FennecMetadata[] mds) {
-        super(fennecService, q, mode);
-        if (mds == null) {
-            mds = emptyChildMetadata;
-        }
-        this.childMetadata = mds;
-    }
-
-    protected FennecBundleMetadata(FennecServiceImpl fennecService,
-                                FennecMode mode,
-                                Node node,
-                                FennecMetadata[] mds) {
-        super(fennecService, mode, node);
-        if (mds == null) {
-            mds = emptyChildMetadata;
-        }
-        this.childMetadata = mds;
-    }
-
-    @Override
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        ArrayList ret = new ArrayList();
-        for (int i = 0; i < childMetadata.length; i++) {
-            FennecMetadata cmd = childMetadata[i];
-            List ret2 = cmd.buildItems(pItem, null, trigger);
-            if (ret2 != null) ret.addAll(ret2);
-        }
-        return ret;
-    }
-
-
-    FennecMetadata[] getChildMetadata() {
-        return childMetadata;
-    }
-
-    // CoR pattern.
-    @Override
-    public String getAltText(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            String ret = childMetadata[i].getAltText(item);
-            if (ret == null) return null;
-            if (ret.length() > 0) return ret;
-        }
-        return "";
-    }
-
-    @Override
-    public String getDescription(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            String ret = childMetadata[i].getDescription(item);
-            if (ret == null) return null;
-            if (ret.length() > 0) return ret;
-        }
-        return "";
-    }
-
-    @Override
-    public short getHeadingLevel(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            short ret = childMetadata[i].getHeadingLevel(item);
-            if (ret == -1) return -1;
-            if (ret > 0) return ret;
-        }
-        return 0;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java
deleted file mode 100644
index 6774038..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class FennecDOMReader {
-    public static final String Fennec_NAMESPACE_URI = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec";
-    public static final String Fennec_DOCUMENT_ELEMENT_NAME = "fennec";
-
-    private FennecServiceImpl fennecService;
-
-    private void error(String message) {
-        System.err.println(message);
-    }
-
-    private IQuery parseQuery(Element e, IQuery parentQuery) {
-        return QueryService.parse(e, parentQuery);
-    }
-
-    private FennecMetadata parseNode(FennecMode mode, Element e, IQuery parentQuery) {
-        NodeList nl = e.getChildNodes();
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        FennecMetadata[] mds = parseInternal(mode, nl, parentQuery);
-        return new FennecGroupMetadata(fennecService, q, mode, mds);
-    }
-
-    private FennecMetadata parseHeader(FennecMode mode, Element e, short level, IQuery parentQuery) {
-        // IQuery q = parseQuery(e, parentQuery);
-        return FennecSimpleMetadata.newHeader(fennecService, null, mode, level);
-    }
-
-    private List parseTextFormat(Element e, IQuery parentQuery) {
-        NodeList nl = e.getChildNodes();
-        int len = nl.getLength();
-        if (len == 0) return null;
-        ArrayList al = new ArrayList();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            switch (n.getNodeType()) {
-            case Node.TEXT_NODE:
-                al.add(n.getNodeValue());
-                break;
-            case Node.ELEMENT_NODE:
-                Element ce = (Element) n;
-                if ("ref".equals(ce.getLocalName())) {
-                    IQuery q = parseQuery((Element) n, parentQuery);
-                    al.add(q);
-                } else {
-                    error("Invalid element in text format:" + n.getNodeName());
-                }
-                break;
-            }
-        }
-        return al;
-    }
-
-    private FennecMetadata parseAltText(FennecMode mode, Element e, IQuery parentQuery) {
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        List l = parseTextFormat(e, parentQuery);
-        return FennecSimpleMetadata.newAltText(fennecService, q, mode, l);
-    }
-
-    private FennecMetadata parseDescription(FennecMode mode, Element e, IQuery parentQuery) {
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        List l = parseTextFormat(e, parentQuery);
-        return FennecSimpleMetadata.newDescription(fennecService, mode, q, l);
-    }
-
-    private boolean parseBoolean(String str) {
-        String str2 = str.trim();
-        if (str2.equals("0")) {
-            return false;
-        } else if (str2.equals("false")) {
-            return false;
-        } else if (str2.equals("1")) {
-            return true;
-        } else if (str2.equals("true")) {
-            return true;
-        }
-        error("Invalide boolean value:" + str2);
-        return false;
-    }
-
-    private int parseTrigger(String str) {
-        String str2 = str.trim();
-        if ("always".equals(str2)) {
-            return FennecMode.TRIGGER_ALWAYS;
-        } else if ("move".equals(str2)) {
-            return FennecMode.TRIGGER_MOVE;
-        } else if ("click".equals(str2)) {
-            return FennecMode.TRIGGER_CLICK;
-        } else if (str.length() == 0) {
-            return FennecMode.TRIGGER_ALWAYS;
-        } else {
-            error("Invalid trigger attribute:" + str2);
-        }
-        return FennecMode.TRIGGER_MOVE;
-    }
-
-    private FennecMetadata parseInternalForElement(FennecMode mode, Element e, IQuery parentQuery) {
-        String name = e.getLocalName();
-        if (name.equals("node")) {
-            return parseNode(mode, e, parentQuery);
-        } else if (name.equals("table")) {
-            // TODO
-        } else if (name.equals("ul")) {
-            // TODO
-        } else if (name.equals("ol")) {
-            // TODO
-        } else if (name.equals("h-")) {
-            return parseHeader(mode, e, (short) -1, parentQuery);
-        } else if (name.equals("h1")) {
-            return parseHeader(mode, e, (short) 1, parentQuery);
-        } else if (name.equals("h2")) {
-            return parseHeader(mode, e, (short) 2, parentQuery);
-        } else if (name.equals("h3")) {
-            return parseHeader(mode, e, (short) 3, parentQuery);
-        } else if (name.equals("h4")) {
-            return parseHeader(mode, e, (short) 4, parentQuery);
-        } else if (name.equals("h5")) {
-            return parseHeader(mode, e, (short) 5, parentQuery);
-        } else if (name.equals("h6")) {
-            return parseHeader(mode, e, (short) 6, parentQuery);
-        } else if (name.equals("altText")) {
-            return parseAltText(mode, e, parentQuery);
-        } else if (name.equals("description")) {
-            return parseDescription(mode, e, parentQuery);
-        } else if (name.equals("metadata")) {
-            // TODO
-        } else if (name.equals("keyDescription")) {
-            // TODO
-        } else if (name.equals("attach")) {
-            NodeList nl = e.getChildNodes();
-            IQuery q = parseQuery(e, parentQuery);
-            if (q == null) {
-                // TODO;
-            }
-
-            String triggerStr = e.getAttributeNS(null, "trigger");
-            int trigger = parseTrigger(triggerStr);
-
-            String autoStr = e.getAttributeNS(null, "auto");
-            boolean auto;
-            if (autoStr.length() == 0) {
-                auto = true;
-            } else {
-                auto = parseBoolean(autoStr);
-            }
-            String changelessStr = e.getAttributeNS(null, "changeless");
-            boolean changeless;
-            if (changelessStr.length() == 0) {
-                changeless = false;
-            } else {
-                changeless = parseBoolean(changelessStr);
-            }
-            String waitContentsStr = e.getAttributeNS(null, "waitContents");
-            boolean waitContents;
-            if (waitContentsStr.length() == 0) {
-                waitContents = false;
-            } else {
-                waitContents = parseBoolean(waitContentsStr);
-            }
-
-            FennecMode nextMode = new FennecMode(FennecMode.TYPE_ATTACH, trigger,
-                                             auto, changeless, waitContents);
-
-            FennecMetadata[] mds = parseInternal(nextMode, nl, q);
-            return FennecRecombinantMetadata.newAttach(fennecService, q, mode, nextMode, mds);
-        } else if (name.equals("unwrap")) {
-            NodeList nl = e.getChildNodes();
-            IQuery q = parseQuery(e, parentQuery);
-            if (q == null) {
-                // TODO;
-            }
-
-            String triggerStr = e.getAttributeNS(null, "trigger");
-            int trigger = parseTrigger(triggerStr);
-
-            FennecMode nextMode = new FennecMode(FennecMode.TYPE_UNWRAP, trigger, false, false, false);
-
-            FennecMetadata[] mds = parseInternal(nextMode, nl, q);
-            return FennecRecombinantMetadata.newUnwrap(fennecService, q, mode, nextMode, mds);
-        }
-        return null;
-    }
-
-    private FennecMetadata[] parseInternal(FennecMode mode, NodeList nl, IQuery parentQuery) {
-        ArrayList al = new ArrayList();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE) {
-                String ns = n.getNamespaceURI();
-                if (ns.equals(Fennec_NAMESPACE_URI)) {
-                    Element e = (Element) n;
-                    FennecMetadata md = parseInternalForElement(mode, e, parentQuery);
-                    if (md != null) al.add(md);
-                }
-            }
-        }
-        return (FennecMetadata[]) al.toArray(new FennecMetadata[0]);
-    }
-
-    private FennecMetadata parseTop(Element e) {
-        String namespaceURI = e.getNamespaceURI();
-        if (!namespaceURI.equals(Fennec_NAMESPACE_URI)) {
-            error("The namespace URI of the document element must be " + Fennec_NAMESPACE_URI);
-            return null;
-        }
-        String localName = e.getLocalName();
-        if (!(Fennec_DOCUMENT_ELEMENT_NAME.equals(localName))) {
-            error("The document element is not fennec");
-        }
-        FennecMode rootMode = new FennecMode(FennecMode.TYPE_SIMPLE);
-
-        IQuery q = parseQuery(e, null);
-        FennecMetadata[] mds = parseInternal(rootMode, e.getChildNodes(), q);
-        if (mds.length == 0) {
-            return null;
-        }
-        
-        return new FennecGroupMetadata(fennecService, q, rootMode, mds);
-    }
-
-    public FennecMetadata parse(IFennecEntry entry) throws XMLStoreException {
-        FennecEntryImpl ei = (FennecEntryImpl) entry;
-        IXMLInfo info = ei.getIXMLInfo();
-        Node n = info.getRootNode();
-        Element e;
-        if (n instanceof Document) {
-            e = ((Document) n).getDocumentElement();
-        } else if (n instanceof Element) {
-            e = (Element) n;
-        } else {
-            throw new XMLStoreException("Failed to load Fennec.", null);
-        }
-        return parseTop(e);
-    }
-
-    FennecDOMReader(FennecServiceImpl fennecService) {
-        this.fennecService = fennecService;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java
deleted file mode 100644
index 83c4183..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-
-
-
-
-public class FennecEntryImpl implements IFennecEntry {
-    private IXMLInfo info;
-
-    public String getDocumentation() {
-        return info.getDocumentation();
-    }
-
-    public boolean isUserEntry() {
-        return info.isUserEntry();
-    }
-        
-    public IXMLInfo getIXMLInfo() {
-        return info;
-    }
-
-    public FennecEntryImpl(IXMLInfo info) {
-        this.info = info;
-    }
-
-    public boolean export(File dest) {
-        return XMLStoreServiceUtil.getXMLStoreService().exportMetadata(info, dest);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java
deleted file mode 100644
index 6aba7e7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.w3c.dom.Node;
-
-
-class FennecGeneratedMetadata extends FennecBundleMetadata {
-    private final Node node;
-    
-    @Override
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r == null) return null;
-        if (r.length() > 0)
-            return r;
-        if (node instanceof INodeEx) {
-            return ((INodeEx) node).extractString();
-        }
-        return "";
-    }
-
-    @Override
-    public String getDescription(ITreeItem item) {
-        return super.getDescription(item);
-    }
-
-    public short getHeadingLevelByMetadata(ITreeItem item) {
-        return super.getHeadingLevel(item);
-    }
-
-    @Override
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0)
-            return r;
-        if (r == -1)
-            return -1;
-        if (node instanceof INodeEx) {
-            return ((INodeEx) node).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    @Override
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        ITreeItem[] childItems = pItem.getChildItems();
-        if (!mode.changed(pItem, trigger) && pItem.hasAlreadyChildRefreshed()) {
-            return Arrays.asList(childItems);
-        } else {
-            TreeItemFennec bItem = mode.buildItemContinued(node, pItem);
-            if ((bItem != null) && bItem.hasChild()) {
-                return Arrays.asList(bItem.getChildItems());
-            }
-        }
-        return null;
-    }
-
-    public static FennecGeneratedMetadata generate(FennecRecombinantMetadata metadata, FennecMode mode, Node node,
-            FennecMetadata[] childMds) {
-        return new FennecGeneratedMetadata(metadata.fennecService, mode, node, childMds);
-    }
-
-    private FennecGeneratedMetadata(FennecServiceImpl fennecService, FennecMode mode, Node node, FennecMetadata[] childMds) {
-        super(fennecService, mode, node, childMds);
-        this.node = node;
-    }
-
-    public static FennecMetadata generate(FennecGeneratedMetadata meta, FennecGeneratedMetadata meta2) {
-        FennecMetadata[] childMds = new FennecMetadata[meta.childMetadata.length+meta2.childMetadata.length];
-        for(int i=0; i<meta.childMetadata.length; i++)
-            childMds[i] = meta.childMetadata[i];
-        for(int i=0; i<meta2.childMetadata.length; i++)
-            childMds[meta.childMetadata.length+i] = meta2.childMetadata[i];
-        return new FennecGeneratedMetadata(meta.fennecService, meta.mode, meta.node, childMds);
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java
deleted file mode 100644
index f30bb69..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-class FennecGroupMetadata extends FennecBundleMetadata {
-    
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r == null) return null;
-        if (r.length() > 0) return r;
-        // If not specified, extract some string from the node.
-        return NodeUtil.extractString(item);
-    }
-
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0) return r;
-        if (r == -1) return -1;
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    FennecGroupMetadata(FennecServiceImpl fennecService,
-                      IQuery q, FennecMode mode,
-                      FennecMetadata[] childMds) {
-        super(fennecService, q, mode, childMds);
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java
deleted file mode 100644
index 97f438f..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-abstract class FennecMetadata {
-    protected final FennecServiceImpl fennecService;
-    private final IQuery query;
-
-    private final boolean hasTarget;
-    public boolean hasTargets() {
-        return hasTarget;
-    }
-
-    private static class EmptyNodeList implements NodeList {
-        public Node item(int index) {
-            return null;
-        }
-
-        public int getLength() {
-            return 0;
-        }
-    }
-    private static final NodeList emptyNodeList = new EmptyNodeList();
-
-    NodeList query(IQuery q, Node baseNode) {
-        if ((q == null) || (!q.hasTarget())) return emptyNodeList;
-        return q.query(baseNode);
-    }
-
-    NodeList query(IQuery q, ITreeItem baseItem) {
-        if ((q == null) || (!q.hasTarget())) return emptyNodeList;
-        Node baseNode;
-        for (baseNode = null;
-            (baseItem != null) && (baseNode == null);
-             baseItem = baseItem.getParent()) {
-            baseNode = (Node) baseItem.getBaseNode();
-        }
-        if (baseNode == null) {
-            baseNode = fennecService.getDocumentElement();
-        }
-        if (baseNode == null) return emptyNodeList;
-        return q.query(baseNode);
-    }
-
-    NodeList query(Node baseNode) {
-        return query(this.query, baseNode);
-    }
-
-    NodeList query(ITreeItem baseItem) {
-        return query(this.query, baseItem);
-    }
-
-    protected final FennecMode mode;
-
-    public abstract String getAltText(ITreeItem item);
-    public abstract String getDescription(ITreeItem item);
-    public abstract short getHeadingLevel(ITreeItem item);
-
-    List buildItems(TreeItemFennec baseItem, Node baseNode, int trigger) throws FennecException {
-        if (hasTargets()) {
-            NodeList nl;
-            if (baseNode != null) {
-                nl = query(baseNode);
-            } else {
-                nl = query(baseItem);
-            }
-            int len = nl.getLength(); 
-            ArrayList result = new ArrayList(len);
-            for (int i = 0; i < len; i++) {
-                Node n = nl.item(i);
-                TreeItemFennec newItem = TreeItemFennec.newTreeItem(this, baseItem, n);
-                if (newItem != null) {
-                    result.add(newItem);
-                }
-            }
-            return result;
-        } else if (this instanceof FennecBundleMetadata) {
-            ArrayList result = new ArrayList(1);
-            TreeItemFennec newItem = TreeItemFennec.newTreeItem(this, baseItem, null);
-            if (newItem != null) {
-                result.add(newItem);
-            }
-            return result;
-        }
-        return null;
-    }
-
-    TreeItemFennec buildRootItem() throws FennecException {
-        List items = buildItems(null, null, FennecMode.TRIGGER_MOVE);
-        if ((items == null) || (items.size() == 0)) {
-            return null;
-        }
-        if (items.size() == 1) {
-            TreeItemFennec root = (TreeItemFennec) items.get(0);
-            return root.expand(FennecMode.TRIGGER_MOVE);
-        } else {
-            TreeItemFennec root = TreeItemFennec.newTreeItem(this, null, fennecService.getDocumentElement());
-            if (root == null) return null;
-            root.setChildItems(items);
-            return root;
-        }
-    }
-
-    abstract List expand(TreeItemFennec pItem, int trigger) throws FennecException;
-
-    protected FennecMetadata(FennecServiceImpl fennecService,
-                           IQuery q, FennecMode mode) {
-        this.fennecService = fennecService;
-        this.query = q;
-        if (q != null) {
-            this.hasTarget = q.hasTarget();
-        } else {
-            this.hasTarget = false;
-        }
-        this.mode = mode;
-        this.mode.addMetadata(this);
-    }
-
-    protected FennecMetadata(FennecServiceImpl fennecService,
-                           FennecMode mode,
-                           Node node) {
-        this.fennecService = fennecService;
-        this.query = null;
-        this.hasTarget = false;
-        this.mode = mode;
-        this.mode.addMetadata(this);
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java
deleted file mode 100644
index 0026289..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.autotranslator.AutoTranslator;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-// TODO I'd like to make it package-local.
-public class FennecMode {
-    static public final int TYPE_SIMPLE = 0;
-
-    static public final int TYPE_ATTACH = 1;
-
-    static public final int TYPE_UNWRAP = 2;
-
-    static public final int TYPE_BUILT = 2;
-
-    static public final int TRIGGER_MOVE = 1 << 0;
-
-    static public final int TRIGGER_CLICK = 1 << 1;
-
-    static public final int TRIGGER_KEEP = 1 << 2;
-
-    static public final int TRIGGER_WITHOUTCHANGE = 1 << 3;
-
-    static public final int TRIGGER_UNWRAP = 1 << 4;
-
-    static public final int TRIGGER_ALWAYS = (TRIGGER_MOVE
-                                              | TRIGGER_CLICK
-                                              | TRIGGER_KEEP
-                                              | TRIGGER_UNWRAP);
-
-    private final int type;
-
-    private final int trigger;
-
-    private final boolean automatic;
-
-    private final boolean changeless;
-
-    private final boolean waitContents;
-
-    private FennecRecombinantMetadata baseMetadata;
-
-    private List<FennecMetadata> belongingMetadata;
-
-    private HashMap<Node, ArrayList<FennecMetadata>> metadataMap;
-
-    void addMetadata(FennecMetadata md) {
-        if (false) {
-            // A mode manages its belonging metadata in order to manage substate, but
-            // currently it is not used...  So now this part is disabled.
-            if (belongingMetadata == null) {
-                belongingMetadata = new ArrayList<FennecMetadata>();
-            }
-            belongingMetadata.add(md);
-        }
-    }
-
-    void setBaseMetadata(FennecRecombinantMetadata md) {
-        this.baseMetadata = md;
-    }
-
-    boolean changed(TreeItemFennec pItem, int trigger) {
-        // TODO:
-        // return true;
-        if ((trigger & TRIGGER_WITHOUTCHANGE) != 0)
-            return false;
-        if (changeless)
-            return false;
-        return true;
-    }
-
-    private TreeItemFennec currentTopItem;
-
-    TreeItemFennec buildItem(Node n, TreeItemFennec pItem) {
-        currentTopItem = pItem;
-        TreeItemFennec item = AutoTranslator.translate(this, pItem, n);
-        if (pItem != null)
-            pItem.markRefreshedChild();
-        return item;
-    }
-
-    TreeItemFennec buildItemContinued(Node n, TreeItemFennec item) {
-        currentTopItem = null;
-        TreeItemFennec newItem = AutoTranslator.translateContinued(this, item, n);
-        if (newItem != null)
-            newItem.markRefreshedChild();
-        return newItem;
-    }
-
-    private FennecMetadata[] topMds;
-
-    private FennecMetadata[] initMetadataMap(FennecMetadata[] mds, Node n) {
-        if (topMds != null) return topMds;
-
-        metadataMap = new HashMap<Node, ArrayList<FennecMetadata>>();
-        ArrayList<FennecMetadata> mdList = new ArrayList<FennecMetadata>();
-        for (int i = 0; i < mds.length; i++) {
-            if (mds[i].hasTargets()) {
-                registMetadata(metadataMap, mds[i], n);
-            } else {
-                mdList.add(mds[i]);
-            }
-        }
-        topMds = mdList.toArray(new FennecMetadata[mdList.size()]);
-        return topMds;
-    }
-
-    public TreeItemFennec generateItem(TreeItemFennec pItem, Node n) {
-        FennecMetadata[] cmds = null;
-
-        FennecMetadata[] mds = baseMetadata.getChildMetadata();
-        if (mds != null) {
-            if (currentTopItem == pItem) {
-                // This item is top.
-                cmds = initMetadataMap(mds, n);
-            } else {
-                initMetadataMap(mds, n);
-                ArrayList<FennecMetadata> aMeta = metadataMap.get(n);
-                if (aMeta != null) {
-                    cmds = (FennecMetadata[]) aMeta.toArray(new FennecMetadata[aMeta.size()]);
-                }
-            }
-        }
-        FennecMetadata md = FennecGeneratedMetadata.generate(baseMetadata, this, n, cmds);
-
-        return TreeItemFennec.newTreeItem(md, pItem, n);
-    }
-
-    private void registMetadata(HashMap<Node, ArrayList<FennecMetadata>> metaMap, FennecMetadata meta, Node base) {
-        NodeList list = meta.query(base);
-        
-        for (int i = 0; i < list.getLength(); i++) {
-            Node node = list.item(i);
-            ArrayList<FennecMetadata> aMeta = metaMap.get(node);
-            if (aMeta == null) {
-                aMeta = new ArrayList<FennecMetadata>();
-                metaMap.put(node, aMeta);
-            }
-            if (meta instanceof FennecBundleMetadata) {
-                FennecMetadata[] m = ((FennecBundleMetadata) meta).childMetadata;
-                for (int j = 0; j < m.length; j++) {
-                    if (m[j].hasTargets()) {
-                        registMetadata(metaMap, m[j], node);
-                    } else {
-                        aMeta.add(m[j]);
-                    }
-                }
-            }
-        }
-    }
-
-    private List autoAttach(TreeItemFennec pItem, NodeList nl, int len, int trigger) throws FennecException {
-        List l = new ArrayList(len);
-
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            /*
-             if (n instanceof CacheableNode) {
-             CachableNode cn = (CachableNode) cn;
-             if (!cn.isChanged()) {
-             } else {
-             }
-             }
-             */
-            TreeItemFennec newItem = buildItem(n, pItem);
-            if (newItem != null)
-                l.add(newItem);
-        }
-        if (l.size() == 0) {
-            if (this.trigger == TRIGGER_CLICK) {
-                throw new FennecInterruptedException("Could not attach the expected nodes.");
-            }
-            return null;
-        }
-        if (waitContents && (l.size() == 0)) {
-            throw new FennecInterruptedException("Contents have not been prepared yet.");
-        }
-        return l;
-    }
-
-    private List manualAttach(TreeItemFennec pItem, NodeList nl, int len, int trigger) throws FennecException {
-        List l = new ArrayList(len);
-
-        FennecMetadata[] childMds = baseMetadata.getChildMetadata();
-        for (int j = 0; j < len; j++) {
-            for (int i = 0; i < childMds.length; i++) {
-                FennecMetadata md = childMds[i];
-                List l2 = md.buildItems(pItem, nl.item(j), trigger);
-                if (l2 != null) {
-                    if (l2.size() > 0) {
-                        l.addAll(l2);
-                    } else if (waitContents) {
-                        throw new FennecInterruptedException("Contents have not been prepared yet.");
-                    }
-                }
-            }
-        }
-
-        return l;
-    }
-
-    private List unwrap(TreeItemFennec pItem, NodeList nl, int len, int trigger) {
-        //TODO
-        return null;
-    }
-
-    // TODO:
-    private HashMap cachedResult = new HashMap();
-
-    List expand(TreeItemFennec pItem, Node baseNode, int trigger) throws FennecException {
-        if ((trigger != TRIGGER_KEEP) && ((trigger & this.trigger) == 0)) {
-            return null;
-        }
-        Object key;
-        if (baseNode != null) {
-            key = baseNode;
-        } else if (pItem == null) {
-            key = null;
-        } else {
-            key = pItem.getBaseNode();
-        }
-        if (!changed(pItem, trigger)) {
-            List l = (List) cachedResult.get(key);
-            if (l != null)
-                return l;
-        }
-
-        NodeList nl;
-        if (baseNode != null) {
-            nl = baseMetadata.query(baseNode);
-        } else {
-            nl = baseMetadata.query(pItem);
-        }
-        int len = nl.getLength();
-        List result = null;
-        switch (type) {
-        case TYPE_ATTACH:
-            if (len == 0) {
-                if (this.trigger == TRIGGER_CLICK) {
-                    throw new FennecInterruptedException("Could not attach the expected nodes.");
-                }
-                return null;
-            }
-            if (automatic) {
-                result = autoAttach(pItem, nl, len, trigger);
-            } else {
-                result = manualAttach(pItem, nl, len, trigger);
-            }
-            cachedResult.put(key, result);
-            return result;
-        case TYPE_UNWRAP:
-            // TODO;
-        }
-
-        return result;
-    }
-
-    FennecMode(int type, int trigger, boolean automatic, boolean changeless, boolean waitContents) {
-        this.type = type;
-        this.trigger = trigger;
-        this.automatic = automatic;
-        this.changeless = changeless;
-        this.waitContents = waitContents;
-    }
-
-    FennecMode(int type) {
-        this.type = type;
-        this.trigger = TRIGGER_ALWAYS;
-        this.automatic = false;
-        this.changeless = false;
-        this.waitContents = false;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java
deleted file mode 100644
index 8b077a4..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-
-
-class FennecRecombinantMetadata extends FennecBundleMetadata {
-    static public final int TYPE_SIMPLE = 0;
-    static public final int TYPE_ATTACH = 1;
-    static public final int TYPE_UNWRAP = 2;
-
-    private final int type;
-    private FennecMode nextMode;
-
-    public FennecMode getNextMode() {
-        return nextMode;
-    }
-
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        return nextMode.expand(pItem, null, trigger);
-    }
-
-    List buildItems(TreeItemFennec baseItem, Node baseNode, int trigger) throws FennecException {
-        return nextMode.expand(baseItem, baseNode, trigger);
-    }
-
-    TreeItemFennec buildRootItem() throws FennecException {
-        TreeItemFennec root = super.buildRootItem();
-        if (root == null) {
-            throw new FennecException("Fennec.EMPTY_PAGE", null);            
-        }
-        return root;
-    }
-
-
-    static FennecRecombinantMetadata newAttach(FennecServiceImpl fennecService,
-                                             IQuery q, FennecMode mode,
-                                             FennecMode nextMode,
-                                             FennecMetadata[] mds) {
-        FennecRecombinantMetadata md = new FennecRecombinantMetadata(fennecService,
-                                                                 q, mode,
-                                                                 nextMode, mds,
-                                                                 TYPE_ATTACH);
-        return md;
-    }
-
-    static FennecRecombinantMetadata newUnwrap(FennecServiceImpl fennecService,
-                                             IQuery q, FennecMode mode,
-                                             FennecMode nextMode,
-                                             FennecMetadata[] mds) {
-        FennecRecombinantMetadata md = new FennecRecombinantMetadata(fennecService,
-                                                                 q, mode,
-                                                                 nextMode, mds,
-                                                                 TYPE_UNWRAP);
-        return md;
-    }
-
-    private FennecRecombinantMetadata(FennecServiceImpl fennecService,
-                                    IQuery q,
-                                    FennecMode mode,
-                                    FennecMode nextMode,
-                                    FennecMetadata[] mds,
-                                    int type) {
-        super(fennecService, q, mode, mds);
-        this.type = type;
-        this.nextMode = nextMode;
-        nextMode.setBaseMetadata(this);
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java
deleted file mode 100644
index 5fe20ec..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-
-
-public class FennecServiceImpl implements IFennecService {
-    private FennecMetadata rootMetadata;
-
-    private int status;
-
-    private TreeItemFennec lastItem;
-
-    private IDocumentEx document;
-
-    private Element root;
-
-    private AnalyzedResult analyzedResult;
-
-    Element getDocumentElement() {
-        return root;
-    }
-
-    private void initDefaultMetadata() {
-        FennecMode rootMode = new FennecMode(FennecMode.TYPE_SIMPLE);
-        FennecMode nextMode = new FennecMode(FennecMode.TYPE_ATTACH, FennecMode.TRIGGER_ALWAYS, true, false, false);
-        // /HTML/FRAMESET/FRAME/HTML/BODY
-        //IQuery q = QueryService.createFromXPath("/HTML/BODY|/HTML/FRAMESET//FRAME/HTML/BODY");
-        //IQuery q = QueryService.createFromXPath("//HTML/BODY");
-        IQuery q = QueryService.createFromXPath("/HTML");
-        FennecMetadata[] mds = new FennecMetadata[1];
-        mds[0] = FennecRecombinantMetadata.newAttach(this, q, rootMode, nextMode, null);
-        rootMetadata = new FennecGroupMetadata(this, null, rootMode, mds);
-    }
-
-    public FennecServiceImpl(IFennecEntry entry, IDocumentEx document) throws FennecException {
-        this.document = document;
-        this.root = document.getDocumentElement();
-        try {
-            FennecDOMReader reader = new FennecDOMReader(this);
-            rootMetadata = reader.parse(entry);
-            this.status = UNINIT;
-        } catch (Exception e) {
-            throw new FennecException("Failed to load Fennec data.", e);
-        }
-    }
-
-    public FennecServiceImpl(IDocumentEx document) {
-        this.document = document;
-        this.root = document.getDocumentElement();
-        initDefaultMetadata();
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-    public int analyze() throws FennecException {
-        analyzedResult = new AnalyzedResult();
-        if (root instanceof INodeEx) {
-            cachedVideoControl = null;
-            cachedSoundControl = null;
-            analyzedResult = ((INodeEx) root).analyze(analyzedResult);
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    private ISoundControl cachedSoundControl;
-
-    private IVideoControl cachedVideoControl;
-
-    private IAccessKeyList cachedAccessKeyList;
-    
-    private IFlashNode[] cachedFlashTopNodes;
-
-    public int initialize() throws FennecException {
-        if (analyzedResult == null) {
-            analyze();
-        }
-        lastItem = rootMetadata.buildRootItem();
-        if (lastItem == null) {
-            throw new FennecException("Failed to initialize", null);
-        }
-        status = NORMAL;
-        return ITreeManager.MOVED;
-    }
-
-    public ITreeItem getLastTreeItem() {
-        return lastItem;
-    }
-
-    private int update(ITreeItem target, int trigger) throws FennecException {
-        TreeItemFennec targetItem = (TreeItemFennec) target;
-        if (targetItem.getParent() == null) {
-            return initialize();
-        } else {
-            targetItem = targetItem.expand(trigger);
-            if (targetItem == null) {
-                return ITreeManager.NOACTION;
-            }
-        }
-        if (targetItem == null) {
-            status = UNINIT;
-            throw new FennecInterruptedException("Lost my way"); // $ NON-NLS-1
-        }
-        lastItem = targetItem;
-        return ITreeManager.MOVED;
-    }
-
-    public int moveUpdate(ITreeItem target) throws FennecException {
-        return update(target, FennecMode.TRIGGER_MOVE);
-    }
-
-    public int moveUpdate(ITreeItem target, boolean update) throws FennecException {
-        if (update) {
-            return update(target, FennecMode.TRIGGER_MOVE);
-        } else {
-            return update(target, FennecMode.TRIGGER_MOVE | FennecMode.TRIGGER_WITHOUTCHANGE);
-        }
-    }
-
-    public int clickUpdate(ITreeItem target) throws FennecException {
-        return update(target, FennecMode.TRIGGER_CLICK) | ITreeManager.CLICKED;
-    }
-
-    private int searchForwardChildren(int idx, TreeItemFennec item, IProposition proposition) throws FennecException {
-        int st;
-        item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-        ITreeItem[] childItems = item.getChildItems();
-        for (int i = idx; i < childItems.length; i++) {
-            TreeItemFennec cItem = (TreeItemFennec) childItems[i];
-            if (proposition.eval(cItem)) {
-                return moveUpdate(cItem) | ITreeManager.FOUND;
-            }
-            st = searchForwardChildren(0, cItem, proposition);
-            if ((st & ITreeManager.FOUND) != 0)
-                return st;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    private int searchForwardInternal(int idx, TreeItemFennec item, IProposition proposition) throws FennecException {
-        int st = searchForwardChildren(idx, item, proposition);
-        if ((st & ITreeManager.FOUND) != 0)
-            return st;
-        TreeItemFennec pItem = (TreeItemFennec) item.getParent();
-        if (pItem == null)
-            return ITreeManager.NOACTION;
-        st = searchForwardInternal(item.getNth() + 1, pItem, proposition);
-        if ((st & ITreeManager.FOUND) != 0)
-            return st;
-
-        return ITreeManager.NOACTION;
-    }
-
-    public ITreeItem[] getSiblings() throws TreeManagerException {
-        ITreeItem parent = lastItem.getParent();
-        if (parent == null) {
-            ITreeItem[] itas = new ITreeItem[1];
-            itas[0] = lastItem;
-            return itas;
-        }
-        return parent.getChildItems();
-    }
-
-    public int searchForward(IProposition proposition) throws FennecException {
-        return searchForwardInternal(0, lastItem, proposition);
-    }
-
-    private int searchBackwardInternal(boolean first, TreeItemFennec item, IProposition proposition) throws FennecException {
-        TreeItemFennec pItem = (TreeItemFennec) item.getParent();
-        if (pItem == null)
-            return ITreeManager.NOACTION;
-        int nth = item.getNth() - 1;
-        if (nth < 0) {
-            if (proposition.eval(pItem)) {
-                return moveUpdate(pItem) | ITreeManager.FOUND;
-            }
-            return searchBackwardInternal(false, pItem, proposition);
-        }
-        if (first) {
-            pItem = pItem.expandChildItems(FennecMode.TRIGGER_KEEP);
-        }
-        ITreeItem[] siblings = pItem.getChildItems();
-        if (nth >= siblings.length) {
-            nth = siblings.length - 1;
-        }
-        item = (TreeItemFennec) siblings[nth];
-
-        while (true) {
-            item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-            ITreeItem[] childItems = item.getChildItems();
-            if (childItems.length == 0)
-                break;
-            item = (TreeItemFennec) childItems[childItems.length - 1];
-        }
-        if (proposition.eval(item)) {
-            return moveUpdate(item) | ITreeManager.FOUND;
-        }
-        return searchBackwardInternal(false, item, proposition);
-    }
-
-    public int searchBackward(IProposition predicate) throws FennecException {
-        return searchBackwardInternal(true, lastItem, predicate);
-    }
-
-    public ISoundControl getSoundControl() {
-        if (cachedSoundControl == null) {
-            cachedSoundControl = TreeItemSoundControl.newTreeItemSoundControl(analyzedResult);
-        }
-        return cachedSoundControl;
-    }
-
-    public IVideoControl getVideoControl() {
-        if (cachedVideoControl == null) {
-            cachedVideoControl = TreeItemVideoControl.newTreeItemVideoControl(analyzedResult, this);
-        }
-        return cachedVideoControl;
-    }
-    
-    public IAccessKeyList getAccessKeyList() {
-        if (cachedAccessKeyList == null) {
-            cachedAccessKeyList = TreeItemAccessKeyList.newAccessKeyList(analyzedResult);
-        }
-        return cachedAccessKeyList;
-    }
-
-    public IFlashNode[] getFlashTopNodes() {
-        if (cachedFlashTopNodes == null) {
-            cachedFlashTopNodes = analyzedResult.getFlashTopNodes();
-        }
-        return cachedFlashTopNodes;
-    }
-
-    private void expandWholeTreeInternal(TreeItemFennec item) throws FennecException {
-        item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-        ITreeItem[] childItems = item.getChildItems();
-        for (int i = 0; i < childItems.length; i++) {
-            expandWholeTreeInternal((TreeItemFennec) childItems[i]);
-        }
-    }
-
-    private int skipToNode(Element e) throws FennecException {
-        initialize();
-        return searchForward(Vocabulary.nodeLocation(e, false));
-    }
-
-    public int skipToAnchor(String target) throws FennecException {
-        Element el = document.getTargetElement(target);
-        if (el != null)
-            return skipToNode(el);
-        return ITreeManager.NOACTION;
-    }
-
-    public ITreeItem expandWholeTree() throws FennecException {
-        initialize();
-        if (lastItem instanceof TreeItemFennec) {
-            expandWholeTreeInternal((TreeItemFennec) lastItem);
-        }
-        return lastItem;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java
deleted file mode 100644
index 626955e..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.NodeList;
-
-
-class FennecSimpleMetadata extends FennecMetadata {
-    static public final int TYPE_ALT_TEXT = 1;
-    static public final int TYPE_DESCRIPTION = 2;
-    static public final int TYPE_HEADER = 3;
-
-    private short headingLevel;
-    private int type;
-
-    private List stringFormat;
-
-    public short getHeadingLevel(ITreeItem item) {
-        return headingLevel;
-    }
-    
-    public String getString(ITreeItem item) {
-        StringBuffer buf = new StringBuffer();
-        if (stringFormat == null) return null;
-        Iterator it = stringFormat.iterator();
-        while (it.hasNext()) {
-            Object o = it.next();
-            if (o instanceof String) {
-                buf.append((String) o);
-            } else if (o instanceof IQuery) {
-                IQuery q = (IQuery) o;
-                NodeList nl = query(q, item);
-                String str = NodeUtil.extractString(nl);
-                buf.append(str);
-            }
-        }
-        return buf.toString();
-    }
-
-    public String getAltText(ITreeItem item) {
-        if (type == TYPE_ALT_TEXT) return getString(item);
-        return "";
-    }
-
-    public String getDescription(ITreeItem item) {
-        if (type == TYPE_DESCRIPTION) return getString(item);
-        return "";
-    }
-
-    static FennecSimpleMetadata newHeader(FennecServiceImpl fennecService,
-                                        IQuery q, FennecMode mode, short level) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_HEADER;
-        md.headingLevel = level;
-        return md;
-    }
-
-    static FennecSimpleMetadata newAltText(FennecServiceImpl fennecService,
-                                         IQuery q, FennecMode mode, List stringFormat) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_ALT_TEXT;
-        md.stringFormat = stringFormat;
-        return md;
-    }
-
-    static FennecSimpleMetadata newDescription(FennecServiceImpl fennecService,
-                                             FennecMode mode, IQuery q, List stringFormat) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_DESCRIPTION;
-        md.stringFormat = stringFormat;
-        return md;
-    }
-
-    private FennecSimpleMetadata(FennecServiceImpl fennecService,
-                               IQuery q, FennecMode mode) {
-        super(fennecService, q, mode);
-    }
-
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        return null;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java
deleted file mode 100644
index a2befb7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-class FennecTableMetadata extends FennecBundleMetadata {
-    private final FennecTableRowMetadata[] rowMds;
-
-    public int getRowSize() {
-        return rowMds.length;
-    }
-
-    public FennecTableRowMetadata getRow(int idx) {
-        return rowMds[idx];
-    }
-    
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r.length() > 0) return r;
-        // If not specified, extract some string from the node.
-        return NodeUtil.extractString(item);
-    }
-
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0) return r;
-        if (r == -1) return -1;
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    FennecTableMetadata(FennecServiceImpl fennecService,
-                      IQuery q, FennecMode mode,
-                      FennecMetadata[] childMds,
-                      FennecTableRowMetadata[] rowMds) {
-        super(fennecService, q, mode, childMds);
-        this.rowMds = rowMds;
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java
deleted file mode 100644
index f96c912..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.w3c.dom.Node;
-
-class FennecTableRowMetadata extends FennecBundleMetadata {
-
-	protected FennecTableRowMetadata(FennecServiceImpl fennecService,
-                                       FennecMode mode,
-                                       Node node,
-                                       FennecMetadata[] mds) {
-		super(fennecService, mode, node, mds);
-	}
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java
deleted file mode 100644
index e65e3a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-
-public class NodeUtil {
-    private static StringBuffer extractNodeString(StringBuffer buf, Node n) {
-        if (n instanceof INodeEx) {
-            INodeEx n2 = (INodeEx) n;
-            
-            // TODO: should be rewritten!!
-            // changed by daisuke
-            String n2String = n2.extractString();
-            buf.append(n2String);
-            if (n2String != null && n2String.length() > 0) // if node has text
-                buf.append(" "); // insert default separator
-        }
-        NodeList nl = n.getChildNodes();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            buf = extractNodeString(buf, nl.item(i));
-        }
-        return buf;
-    }
-
-    public static String extractString(NodeList nl) {
-        StringBuffer buf = new StringBuffer();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            buf = extractNodeString(buf, n);
-        }
-        return buf.toString();
-    }
-
-    public static String extractString(Node n) {
-        StringBuffer buf = new StringBuffer();
-        buf = extractNodeString(buf, n);
-        return buf.toString();
-    }
-
-    public static String extractString(ITreeItem item) {
-        Node baseNode = (Node) item.getBaseNode();
-        if (baseNode != null) {
-            return extractString(baseNode);
-        }
-        return "";
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java
deleted file mode 100644
index c7c8532..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITable;
-import org.eclipse.actf.ai.fennec.treemanager.ITableRow;
-
-
-
-public class TableImpl implements ITable {
-    private FennecTableMetadata tableMetadata;
-
-    public ITableRow getRow(int row) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public int getColumnSize() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getRowSize() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public String getTableString() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java
deleted file mode 100644
index b8d22c8..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-
-
-public class TreeItemAccessKeyList implements IAccessKeyList {
-    INodeEx[] accessKeyNodes;
-
-    public TreeItemAccessKeyList(AnalyzedResult analyzedResult) {
-        accessKeyNodes = analyzedResult.getAccessKeyNodes();
-    }
-
-    public char getAccessKeyAt(int index) {
-        if (accessKeyNodes.length <= index)
-            return 0;
-        return accessKeyNodes[index].getAccessKey();
-    }
-
-    public String getUIStringAt(int index) {
-        // TODO
-        return "";
-    }
-
-    public int size() {
-        return accessKeyNodes.length;
-    }
-
-    public static IAccessKeyList newAccessKeyList(AnalyzedResult analyzedResult) {
-        return new TreeItemAccessKeyList(analyzedResult);
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java
deleted file mode 100644
index be59fef..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.model.dom.dombycom.IElementEx;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.model.dom.dombycom.ISelectElement;
-import org.eclipse.actf.model.dom.dombycom.IElementEx.Position;
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-// TODO I'd like to make it package-local.
-public class TreeItemFennec implements ITreeItem {
-    static private final TreeItemFennec[] emptyChild = new TreeItemFennec[0];
-
-    private Node baseNode;
-
-    private ITreeItem parent;
-
-    private ITreeItem[] childItems;
-
-    private FennecMetadata metadata;
-
-    private boolean hasAlreadyChildRefreshed;
-
-    private int nth;
-
-    private TreeItemTerms terms;
-
-    // for terms
-    int distance = 0;
-    
-    public static TreeItemFennec newTreeItem(FennecMetadata metadata, ITreeItem parent, Node baseNode) {
-        if (baseNode == null) {
-            // TODO
-            return new TreeItemFennec(metadata, parent, null, new TreeItemTerms(null));
-        }
-        if (!(baseNode instanceof IEvalTarget)) return null;
-        IEvalTarget evalTarget = (IEvalTarget) baseNode;
-        return new TreeItemFennec(metadata, parent, baseNode, new TreeItemTerms(evalTarget)); 
-    }
-
-    protected TreeItemFennec(FennecMetadata metadata,
-                           ITreeItem parent, Node baseNode,
-                           TreeItemTerms terms) {
-        this.terms = terms;
-        this.metadata = metadata;
-        this.parent = parent;
-        this.baseNode = baseNode;
-        this.childItems = emptyChild;
-        this.nth = 0;
-    }
-    
-
-    public AbstractTerms getTerms() {
-        return terms;
-    }
-
-    public ITreeItem getParent() {
-        return parent;
-    }
-
-    public int getNth() {
-        return nth;
-    }
-
-    private void setAsRoot() {
-        this.parent = null;
-    }
-
-    private void setParent() {
-        for (int i = 0; i < childItems.length; i++) {
-            TreeItemFennec c = (TreeItemFennec) childItems[i];
-            c.parent = this;
-            c.nth = i;
-        }
-    }
-
-    public void setChildItems(List items) {
-        if (items == null) {
-            this.childItems = emptyChild;
-        } else {
-            this.childItems = (ITreeItem[]) items.toArray(emptyChild);
-        }
-        setParent();
-    }
-
-    public void setChildItems(ITreeItem[] items) {
-        if (items == null) {
-            this.childItems = emptyChild;
-        } else {
-            this.childItems = items;
-        }
-        setParent();
-    }
-
-    public void appendChildItems(ITreeItem[] items) {
-        if (items == null)
-            return;
-        ITreeItem[] newItems = new ITreeItem[childItems.length + items.length];
-        int i, j;
-        for (i = 0; i < childItems.length; i++) {
-            newItems[i] = childItems[i];
-        }
-        for (j = 0; j < items.length; i++, j++) {
-            TreeItemFennec c = (TreeItemFennec) items[j];
-            c.parent = this;
-            newItems[i] = c;
-        }
-        this.childItems = newItems;
-    }
-
-    public boolean hasChild() {
-        return (childItems.length > 0);
-    }
-
-    public void forceParent(ITreeItem parent) {
-        this.parent = parent;
-    }
-
-    void markRefreshedChild() {
-        hasAlreadyChildRefreshed = true;
-    }
-
-    boolean hasAlreadyChildRefreshed() {
-        return hasAlreadyChildRefreshed;
-    }
-
-    TreeItemFennec expandChildItems(int trigger) throws FennecException {
-        List newChildItems = metadata.expand(this, trigger);
-        setChildItems(newChildItems);
-        return this;
-    }
-
-    private Node getNearestNodeInternal(int idx) {
-        if (baseNode != null) return baseNode;
-        for (; idx < childItems.length; idx++) {
-            TreeItemFennec item = (TreeItemFennec) childItems[idx];
-            return item.getNearestNodeInternal(0);
-        }
-        if (parent == null) return null;
-        return ((TreeItemFennec) parent).getNearestNodeInternal(getNth());
-    }
-
-    Node getNearestNode() {
-        return getNearestNodeInternal(0);
-    }
-
-    private TreeItemFennec autoUnwrap(int trigger) throws FennecException {
-        TreeItemFennec item = this;
-
-        for (;;) {
-            TreeItemFennec parent = (TreeItemFennec) item.getParent();
-            if (parent == null) {
-                item.setChildItems(emptyChild);
-                return item;
-            }
-            int idx = item.getNth();
-            List newSiblings = parent.metadata.expand(parent, (FennecMode.TRIGGER_KEEP
-                                                               | FennecMode.TRIGGER_UNWRAP));
-            if (newSiblings != null) {
-                int newSize = newSiblings.size();
-                if (newSize > 0) {
-                    if (idx >= newSize) idx = newSize - 1;
-                    item = (TreeItemFennec) newSiblings.get(idx);
-
-                    item = item.expandChildItems(trigger);
-                    // success. Set parent's childItems.
-                    parent.setChildItems(newSiblings);
-                    return item;
-                }
-            }
-            item = parent;
-        }
-    }
-
-    TreeItemFennec expand(int trigger) throws FennecException {
-        TreeItemFennec parent = (TreeItemFennec) getParent();
-        if (parent != null) {
-            int idx = getNth();
-            List newSiblings = parent.metadata.expand(parent, FennecMode.TRIGGER_KEEP);
-            if (newSiblings == null) {
-                return parent.autoUnwrap(trigger);
-            }
-            int newSize = newSiblings.size();
-            if (newSize == 0) {
-                return parent.autoUnwrap(trigger);
-            }
-            if (idx >= newSize) {
-                idx = newSize - 1;
-            }
-            TreeItemFennec newTarget = (TreeItemFennec) newSiblings.get(idx);
-            newTarget = newTarget.expandChildItems(trigger);
-            // success. Set parent's childItems.
-            parent.setChildItems(newSiblings);
-            return newTarget;
-        } else {
-            List newChildItems = metadata.expand(this, trigger);
-            setChildItems(newChildItems);
-            this.setAsRoot();
-            return this;
-        }
-    }
-
-    public ITreeItem[] getChildItems() {
-        return childItems;
-    }
-
-    public String getUIString() {
-        if (metadata != null) {
-            String r = metadata.getAltText(this);
-            if (r == null)
-                return "";
-            if (r.length() > 0)
-                return r;
-        }
-        if (baseNode instanceof INodeEx) {
-            INodeEx node2 = (INodeEx) baseNode;
-            return node2.extractString();
-        }
-        return "";
-    }
-
-    public String getDescription() {
-        if (metadata != null) {
-            String r = metadata.getDescription(this);
-            if (r == null)
-                return "";
-            if (r.length() > 0)
-                return r;
-        }
-        return "";
-    }
-
-    public String getNodeString() {
-        if (baseNode != null) {
-            return baseNode.getNodeName();
-        }
-        return "No Node";
-    }
-
-    public short getHeadingLevel() {
-        if (metadata != null)
-            return metadata.getHeadingLevel(this);
-        else
-            return 0;
-    }
-
-    public String getLinkURI() {
-        if (baseNode instanceof INodeEx) {
-            INodeEx node2 = (INodeEx) baseNode;
-            return node2.getLinkURI();
-        }
-        return null;
-    }
-
-    public Object getBaseNode() {
-        return baseNode;
-    }
-    
-    public FennecMetadata getMetadata() {
-        return metadata;
-    }
-
-    public int doClick() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).doClick();
-            return ITreeManager.CLICKED;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int stay() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int highlight() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).highlight();
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int unhighlight() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).unhighlight();
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public boolean setFocus() {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).setFocus();
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isInputable() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isInputable().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isClickable() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isClickable().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isImage() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isImage().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public String[] getStillPictureData() {
-        if (!(baseNode instanceof INodeEx)) {
-            return new String[3];
-        }
-        return ((INodeEx) baseNode).getStillPictureData();
-    }
-
-    public int setText(String text) throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).setText(text);
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public String getText() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getText();
-        }
-        return "";
-    }
-
-    public void addMetadata(TreeItemFennec item) {
-        if (!(this.metadata instanceof FennecGeneratedMetadata))
-            return;
-        if (!(item.metadata instanceof FennecGeneratedMetadata))
-            return;
-
-        FennecGeneratedMetadata meta = (FennecGeneratedMetadata) this.metadata;
-        FennecGeneratedMetadata meta2 = (FennecGeneratedMetadata) item.metadata;
-
-        this.metadata = FennecGeneratedMetadata.generate(meta, meta2);
-    }
-
-    
-    private Position radioPosition;
-
-    private Position listPosition;
-
-    public int getRadioIndex() {
-        if (baseNode instanceof IElementEx) {
-            if (radioPosition == null)
-                radioPosition = ((IElementEx) baseNode).getRadioPosition();
-            if (radioPosition == null)
-                return 0;
-            return radioPosition.index;
-        }
-        return 0;
-    }
-
-    public int getRadioTotal() {
-        if (baseNode instanceof IElementEx) {
-            if (radioPosition == null)
-                radioPosition = ((IElementEx) baseNode).getRadioPosition();
-            if (radioPosition == null)
-                return 0;
-            return radioPosition.total;
-        }
-        return 0;
-    }
-
-    public int getListIndex() {
-        Node current = baseNode;
-        do {
-            if (current instanceof IElementEx) {
-                if (listPosition == null)
-                    listPosition = ((IElementEx) current).getListPosition();
-                if (listPosition == null)
-                    return 0;
-                return listPosition.index;
-            }
-            current = current.getParentNode();
-        } while (current != null);
-        return 0;
-    }
-
-    public int getListTotal() {
-        Node current = baseNode;
-        do {
-            if (current instanceof IElementEx) {
-                if (listPosition == null)
-                    listPosition = ((IElementEx) current).getListPosition();
-                if (listPosition == null)
-                    return 0;
-                return listPosition.total;
-            }
-            current = current.getParentNode();
-        } while (current != null);
-        return 0;
-    }
-
-    public String getFormLabel() {
-        if (!(baseNode instanceof IElementEx))
-            return "";
-        Element label = ((IElementEx) baseNode).getFormLabel();
-        if (label == null || !(label instanceof INodeEx))
-            return "";
-        NodeList nl = label.getChildNodes();
-        StringBuffer ret = new StringBuffer();
-        for (int i = 0; i < nl.getLength(); i++) {
-            Node node = nl.item(i);
-            if (node instanceof INodeEx)
-                ret.append(((INodeEx) node).extractString());
-        }
-        return ret.toString();
-    }
-
-    public void setSelectedIndices(int[] indices) {
-        if (baseNode instanceof ISelectElement) {
-            ((ISelectElement) baseNode).setSelectedIndices(indices);
-        }
-    }
-
-    public int[] getSelectedIndices() {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getSelectedIndices();
-        }
-        return null;
-    }
-
-    public int getOptionsCount() {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getOptionsCount();
-        }
-        return 0;
-    }
-
-    public String getOptionTextAt(int index) {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getOptionTextAt(index);
-        }
-        return "";
-    }
-
-    // For user annotation.
-    public Node serializeQuery(Node parent) {
-        if (baseNode == null)
-            return null;
-        return QueryService.serializeQuery(baseNode, parent);
-    }
-    
-    public char getAccessKey() {
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getAccessKey();
-        }
-        return 0;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java
deleted file mode 100644
index 9d9ca36..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-
-
-
-
-public class TreeItemMark extends TreeItemFennec {
-    private static class TreeItemMarkTerms extends TreeItemTerms {
-        @Override
-        public boolean hasContent(IEvalTarget target) {
-            return true;
-        }
-
-        @Override
-        public boolean hasReadingContent(IEvalTarget target) {
-            return true;
-        }
-
-        @Override
-        public boolean isFlashLastNode(IEvalTarget node) {
-            if (node instanceof TreeItemMark) {
-                TreeItemMark mark = (TreeItemMark) node;
-                if (mark.getType() == MarkType.FLASH_END) 
-                    return true;
-            }
-            return false;
-        }
-
-        TreeItemMarkTerms() {
-            super(null);
-        }
-    }
-
-    private static TreeItemTerms treeItemMarkTermsInstance = new TreeItemMarkTerms();
-
-    public enum MarkType {
-        FLASH_END
-    }
-
-    @Override
-    public AbstractTerms getTerms() {
-        return treeItemMarkTermsInstance;
-    }
-    
-    private MarkType type;
-    
-    public TreeItemMark(ITreeItem parent, MarkType type) {
-        super(null, parent, null, treeItemMarkTermsInstance);
-        this.type = type;
-    }
-    
-    @Override
-    public String getUIString() {
-        return "";
-    }
-    
-    @Override
-    public String getNodeString() {
-        return "Mark";
-    }
-    
-    public MarkType getType() {
-        return type;
-    }
-    
-    @Override
-    TreeItemFennec expandChildItems(int trigger) throws FennecException {
-        setChildItems((List) null);
-        return this;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java
deleted file mode 100644
index dc8c3d0..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeExSound;
-
-
-
-public class TreeItemSoundControl implements ISoundControl {
-    private AnalyzedResult analyzedResult;
-
-    public boolean muteMedia() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            boolean st = sounds[i].getMuteState();
-            r &= sounds[i].muteMedia(!st);
-        }
-        return r;
-    }
-
-    public VolumeState getVolumeState() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean mute = true;
-        boolean max = true;
-        boolean min = true;
-        for (int i = 0; i < sounds.length; i++) {
-            mute &= sounds[i].getMuteState();
-            int vol = sounds[i].getVolume();
-            max &= (vol == INodeExSound.VOLUME_MAX);
-            min &= (vol == INodeExSound.VOLUME_MIN);
-        }
-        if (mute) return VolumeState.MUTE;
-        if (max) return VolumeState.MAX;
-        if (min) return VolumeState.MIN;
-
-        return VolumeState.OTHER;
-    }
-
-    private static final int VOLUME_TICK = 150;
-    private static final int VOLUME_TICK_MINIMAL = 10;
-
-    public boolean volumeDownMedia() {
-        return volumeDownMedia(VOLUME_TICK);
-    }
-    
-    public boolean minimalVolumeDownMedia() {
-        return volumeDownMedia(VOLUME_TICK_MINIMAL);
-    }
-    
-    private boolean volumeDownMedia(int tick) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            int vol = sounds[i].getVolume();
-            if (vol < 0) {
-                return false;
-            } else if (vol < (INodeExSound.VOLUME_MIN + tick)) {
-                vol = INodeExSound.VOLUME_MIN;
-            } else {
-                vol -= tick;
-            }
-            r &= sounds[i].setVolume(vol);
-        }
-        return r;
-    }
-
-    public boolean volumeUpMedia() {
-        return volumeUpMedia(VOLUME_TICK);
-    }        
-    
-    public boolean minimalVolumeUpMedia() {
-        return volumeUpMedia(VOLUME_TICK_MINIMAL);
-    }
-
-    private boolean volumeUpMedia(int tick) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            int vol = sounds[i].getVolume();
-            if (vol < 0) {
-                return false;
-            } else if (vol > (INodeExSound.VOLUME_MAX - tick)) {
-                vol = INodeExSound.VOLUME_MAX;
-            } else {
-                vol += tick;
-            }
-            r &= sounds[i].setVolume(vol);
-        }
-        return r;
-    }
-
-    public int getCount() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        return sounds.length;
-    }
-
-    public static ISoundControl newTreeItemSoundControl(AnalyzedResult ar) {
-        return new TreeItemSoundControl(ar);
-    }
-
-    private TreeItemSoundControl(AnalyzedResult ar) {
-        this.analyzedResult = ar;
-    }
-
-    public int[] getVolumes(){
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        int[] volumes = new int[sounds.length];
-        for (int i = 0; i < sounds.length; i++) {
-            volumes[i] = sounds[i].getVolume();
-            
-            if (volumes[i] < 0) {
-                volumes[i] = 0;
-            }
-        }
-        return volumes;
-    }
-
-    public boolean setVolumes(int[] volumes) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            r &= sounds[i].setVolume(volumes[i]);
-        }
-        return r;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java
deleted file mode 100644
index 39d31a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.DelegationTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.eclipse.swt.graphics.Rectangle;
-import org.w3c.dom.Node;
-
-
-
-
-public class TreeItemTerms extends DelegationTerms {
-
-    public TreeItemTerms(IEvalTarget delegationTarget) {
-        super(delegationTarget);
-    }
-
-    private boolean isSymbol(char c) {
-        int type = Character.getType(c);
-        if (type == Character.OTHER_SYMBOL || type == Character.MODIFIER_SYMBOL || type == Character.MATH_SYMBOL)
-            return true;
-        return false;
-    }
-
-    private boolean isSeparator(char c) {
-        switch (Character.getType(c)) {
-        case Character.SPACE_SEPARATOR:
-        case Character.LINE_SEPARATOR:
-        case Character.PARAGRAPH_SEPARATOR:
-        case Character.FORMAT:
-        case Character.CONTROL:
-            return true;
-        }
-        return false;
-    }
-
-    private boolean isPunctuation(char c) {
-        int type = Character.getType(c);
-        if (type == Character.CONNECTOR_PUNCTUATION || type == Character.DASH_PUNCTUATION
-                || type == Character.START_PUNCTUATION || type == Character.END_PUNCTUATION
-                || type == Character.INITIAL_QUOTE_PUNCTUATION || type == Character.FINAL_QUOTE_PUNCTUATION
-                || type == Character.OTHER_PUNCTUATION)
-            return true;
-        return false;
-    }
-
-    private enum ContentCheckResult {
-        TRUE, FALSE, UNKNOWN
-    }
-    private ContentCheckResult contentCommonCheck(ITreeItem item) {
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof IEvalTarget) {
-            if (Vocabulary.hasContent().eval((IEvalTarget) baseNode)) {
-                return ContentCheckResult.TRUE;
-            }
-        }
-
-        if (!isVisibleNode(item))
-            return ContentCheckResult.FALSE;
-        if (Vocabulary.isSelectOption().eval(item))
-            return ContentCheckResult.FALSE;
-
-        return ContentCheckResult.UNKNOWN;
-    }
-
-    @Override
-    public boolean hasContent(IEvalTarget target) {
-        if (!(target instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) target;
-        switch (contentCommonCheck(item)) {
-        case TRUE:
-            return true;
-        case FALSE:
-            return false;
-        }
-
-        String str = item.getUIString();
-        if (str.length() == 0)
-            return false;
-        return true;
-    }
-
-    @Override
-    public boolean hasReadingContent(IEvalTarget target) {
-        if (!(target instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) target;
-        switch (contentCommonCheck(item)) {
-        case TRUE:
-            return true;
-        case FALSE:
-            return false;
-        }
-
-        String str = item.getUIString();
-        // remove only punctuation
-        if (str.length() == 0) return false;
-
-        if (Vocabulary.isLink().eval(item))
-            return true;
-        for (int i = 0; i < str.length(); i++) {
-            if (isSeparator(str.charAt(i)) || isPunctuation(str.charAt(i)) //
-                    || isSymbol(str.charAt(i)))
-                continue;
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean isVisibleNode(IEvalTarget target) {
-        return true;
-    }
-
-    @Override
-    public boolean isBlockJumpPointF(IEvalTarget node) {
-        return isBlockJumpPoint(false, node);
-    }
-
-    @Override
-    public boolean isBlockJumpPointB(IEvalTarget node) {
-        return isBlockJumpPoint(true, node);
-    }
-
-    public boolean isBlockJumpPoint(boolean back, IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        TreeItemFennec prev;
-        if (!back) {
-            if (item.getNth() > 0) {
-                prev = (TreeItemFennec) item.getParent().getChildItems()[item.getNth() - 1];
-                while (prev.hasChild()) {
-                    ITreeItem[] items = prev.getChildItems();
-                    prev = (TreeItemFennec) items[items.length - 1];
-                }
-            } else {
-                prev = (TreeItemFennec) item.getParent();
-            }
-        } else {
-            if (item.getNth() == item.getParent().getChildItems().length - 1) {
-                ITreeItem parent = item.getParent();
-                if (parent == null)
-                    return false;
-                while (parent.getNth() == parent.getParent().getChildItems().length - 1) {
-                    parent = parent.getParent();
-                    if (parent == null)
-                        return false;
-                }
-                prev = (TreeItemFennec) parent.getParent().getChildItems()[parent.getNth() + 1];
-            } else {
-                if (item.hasChild()) {
-                    prev = (TreeItemFennec) item.getChildItems()[0];
-                } else {
-                    prev = (TreeItemFennec) item.getParent().getChildItems()[item.getNth() + 1];
-                }
-            }
-        }
-        if (prev == null)
-            return false;
-
-        item.distance = prev.distance + 1;
-        prev.distance = 0;
-
-        if (!(item.getBaseNode() instanceof INodeEx))
-            return false;
-        if (!(prev.getBaseNode() instanceof INodeEx))
-            return false;
-
-        INodeEx nex = (INodeEx) item.getBaseNode();
-        INodeEx nex2 = (INodeEx) prev.getBaseNode();
-        if (nex == null || nex2 == null)
-            return false;
-
-        Rectangle r = nex.getLocation();
-        Rectangle r2 = nex2.getLocation();
-        if (r == null || r2 == null)
-            return false;
-
-        int dist = distance(r, r2);
-        item.distance += dist;
-
-        if (r.width < 20)
-            return false;
-        if (!Vocabulary.hasContent().eval(node))
-            return false;
-        if (!Vocabulary.hasReadingContent().eval(node))
-            return false;
-        if (Vocabulary.isClickable().eval(node))
-            return false;
-        if (item.getNth() > 2 && Vocabulary.isConnectable().eval(node))
-            return false;
-
-        if (item.distance > 800) {
-            item.distance = 0;
-            return true;
-        }
-
-        if (!back && !super.isBlockJumpPointF(node))
-            return false;
-        if (back && !super.isBlockJumpPointB(node))
-            return false;
-
-        if (item.distance > 200) {
-            item.distance = 0;
-            return true;
-        }
-        return false;
-    }
-
-    private int distance(Rectangle r, Rectangle r2) {
-        return (int) Math.sqrt(Math.abs(r.x - r2.x) * Math.abs(r.y - r2.y)) //
-                + Math.abs(r.x - r2.x) + Math.abs(r.y - r2.y);
-    }
-
-    @Override
-    public boolean isHeading(int level, IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) node;
-        if (level == 0)
-            return (item.getHeadingLevel() > 0);
-        else
-            return item.getHeadingLevel() == level;
-    }
-
-    @Override
-    public boolean isHeadingJumpPoint(IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) node;
-
-        ITreeItem current = item;
-        short r = 0;
-        do {
-            if (current == null)
-                return super.isHeadingJumpPoint(node);
-            FennecMetadata meta = ((TreeItemFennec) current).getMetadata();
-            if (meta instanceof FennecGeneratedMetadata) {
-                r = ((FennecGeneratedMetadata) meta).getHeadingLevelByMetadata(item);
-                if (r > 0)
-                    return true;
-                else if (r == -1)
-                    return false;
-                current = current.getParent();
-            } else
-                break;
-        } while (r == 0);
-
-        if (((TreeItemFennec) item).getMetadata() == null)
-            return false;
-        return ((TreeItemFennec) item).getMetadata().getHeadingLevel(item) > 0;
-    }
-
-    @Override
-    public boolean isConnectable(IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        if (item.hasChild())
-            return false;
-
-        int nth = item.getNth();
-        int nextNth = nth + 1;
-
-        ITreeItem parent = ((TreeItemFennec) node).getParent();
-        if (parent == null)
-            return false;
-
-        ITreeItem[] items = parent.getChildItems();
-        if (nextNth >= items.length)
-            return false;
-        
-        Object o = items[nextNth].getBaseNode();
-        if (o == null || !(o instanceof Node))
-            return false;
-        Node n = (Node) o;
-            
-        return Vocabulary.isReachable(n).eval(node);
-    }
-
-    @Override
-    public boolean find(String str, boolean exact, IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-
-        ITreeItem item = (ITreeItem) node;
-        String uiString = item.getUIString();
-
-        if (!exact) {
-            uiString = uiString.toLowerCase();
-            str = str.toLowerCase();
-        }
-
-        if (uiString.indexOf(str) != -1)
-            return true;
-
-        /*
-         for (int len = str.length() - 1; len > 0; len--) {
-         if (uiString.lastIndexOf(str.substring(0, len)) == uiString.length() - len) {
-         if (hasChild()) {
-         if(Vocabulary.startsWith(str.substring(len), exact).eval(getChildItems()[0])){
-         return true;
-         }
-         continue;
-         }
-
-         int nth = item.getNth();
-         ITreeItem parent = item.getParent();
-         while (parent != null) {
-         ITreeItem[] items = parent.getChildItems();
-         if (nth + 1 < items.length) {
-         if(Vocabulary.startsWith(str.substring(len), exact).eval(items[nth + 1])){
-         return true;
-         }
-         break;
-         }
-         nth = parent.getNth();
-         parent = parent.getParent();
-         }
-         }
-         }*/
-        return false;
-    }
-
-    @Override
-    public boolean startsWith(String str, boolean exact, IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-        String uiString = item.getUIString();
-
-        if (!exact) {
-            uiString = uiString.toLowerCase();
-            str = str.toLowerCase();
-        }
-
-        if (uiString.length() < str.length()) {
-            if (str.startsWith(uiString)) {
-                int len = uiString.length();
-                if (item.hasChild()) {
-                    return Vocabulary.startsWith(str.substring(len), exact).eval(item.getChildItems()[0]);
-                }
-
-                int nth = item.getNth();
-                ITreeItem parent = item.getParent();
-                while (parent != null) {
-                    ITreeItem[] items = parent.getChildItems();
-                    if (nth + 1 < items.length) {
-                        return Vocabulary.startsWith(str.substring(len), exact).eval(items[nth + 1]);
-                    }
-                    nth = parent.getNth();
-                    parent = parent.getParent();
-                }
-            }
-        }
-
-        return uiString.startsWith(str);
-    }
-
-    @Override
-    public boolean nodeLocation(Node refNode, boolean backward, IEvalTarget node) {
-        if (!Vocabulary.hasContent().eval(node))
-            return false;
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        Node targetNode = item.getNearestNode();
-        if (targetNode == null) return false;
-
-        ArrayList<Node> refAncestors = getAncestors(refNode);
-        ArrayList<Node> ancestors = getAncestors(targetNode);
-        int i = refAncestors.size() - 1;
-        int j = ancestors.size() - 1;
-        while ((i >= 0) && (j >= 0)) {
-            Node refAncestor = refAncestors.get(i);
-            Node ancestor = ancestors.get(j);
-            if (!(ancestor.isSameNode(refAncestor))) {
-                if (!((ancestor instanceof INodeEx)) && (refAncestor instanceof INodeEx))
-                    return false;
-
-                int ancestorNth = ((INodeEx) ancestor).getNth();
-                int refAncestorNth = ((INodeEx) refAncestor).getNth();
-                if (ancestorNth == refAncestorNth)
-                    return true;
-                if (backward) {
-                    return (ancestorNth < refAncestorNth);
-                } else {
-                    return (ancestorNth > refAncestorNth);
-                }
-            }
-            i--;
-            j--;
-        }
-        return true;
-    }
-
-    private ArrayList<Node> getAncestors(Node n) {
-        ArrayList<Node> list = new ArrayList<Node>();
-        while (n != null) {
-            list.add(n);
-            n = n.getParentNode();
-        }
-        return list;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java
deleted file mode 100644
index 69763cc..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.treemanager.IMediaSyncEventListener;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.model.dom.dombycom.INodeExVideo;
-import org.eclipse.actf.ui.util.timer.WeakSyncTimer;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-
-
-
-public class TreeItemVideoControl implements IVideoControl {
-    private final IFennecService fennecService;
-    private AnalyzedResult analyzedResult;
-
-    private INodeExVideo getCurrentNodeExVideo() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        if (videos.length == 0) return null;
-        if (videos.length == 1) return videos[0];
-
-        ITreeItem item = fennecService.getLastTreeItem();
-        for (int i = 0; i < videos.length; i++) {
-            INodeEx node = videos[i].getReferenceNode();
-            IProposition prop = Vocabulary.nodeLocation(node, true);
-            if (prop.eval(item)) return videos[i];
-        }
-        return videos[0];
-    }
-
-    public boolean previousTrack() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].previousTrack();
-        }
-        return r;
-    }
-
-    public boolean nextTrack() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].nextTrack();
-        }
-        return r;
-    }
-
-    public boolean stopMedia() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].stopMedia();
-        }
-        return r;
-    }
-
-    public boolean playMedia() {
-        INodeExVideo v = getCurrentNodeExVideo();
-
-        // Before playing the media, pause the other media to avoid audio interference.
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        for (int i = 0; i < videos.length; i++) {
-            if (videos[i] != v) {
-                videos[i].pauseMedia();
-            }
-        }
-        if (v != null) {
-            return v.playMedia();
-        } else {
-            return false;
-        }
-    }
-
-    public boolean pauseMedia() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean pause = false;
-        for (int i = 0; i < videos.length; i++) {
-            INodeExVideo.VideoState st = videos[i].getCurrentState();
-            if ((st == INodeExVideo.VideoState.STATE_PLAY)
-                || (st == INodeExVideo.VideoState.STATE_UNKNOWN)) {
-                pause = true;
-                break;
-            }
-        }
-
-        if (pause) {
-            boolean r = true;
-            for (int i = 0; i < videos.length; i++) {
-                r &= videos[i].pauseMedia();
-            }
-            return r;
-        } else {
-            INodeExVideo v = getCurrentNodeExVideo();
-            if (v != null) {
-                return v.playMedia();
-            } else {
-                return false;
-            }
-        }
-    }
-
-    public IVideoControl.VideoState getVideoState() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        IVideoControl.VideoState st = IVideoControl.VideoState.STATE_OTHER;
-        for (int i = 0; i < videos.length; i++) {
-            INodeExVideo.VideoState stn = videos[i].getCurrentState();
-            switch (stn) {
-            case STATE_UNKNOWN:
-                break;
-            case STATE_PLAY:
-                st = IVideoControl.VideoState.STATE_PLAY;
-                break;
-            case STATE_STOP:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_STOP;
-                }
-                break;
-            case STATE_PAUSE:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_PAUSE;
-                }
-                break;
-            case STATE_WAITING:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_WAITING;
-                }
-                break;
-            case STATE_FASTFORWARD:
-                if (st != IVideoControl.VideoState.STATE_PLAY) {
-                    st = IVideoControl.VideoState.STATE_FASTFORWARD;
-                }
-                break;
-            case STATE_FASTREVERSE:
-                if (st != IVideoControl.VideoState.STATE_PLAY) {
-                    st = IVideoControl.VideoState.STATE_FASTREVERSE;
-                }
-            }
-        }
-        return st;
-    }
-
-    public boolean fastReverse() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.fastReverse();
-        } else {
-            return false;
-        }
-    }
-
-    public boolean fastForward() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.fastForward();
-        } else {
-            return false;
-        }
-    }
-
-    public double getCurrentPosition() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.getCurrentPosition();
-        } else {
-            return 0;
-        }
-    }
-
-    public double getTotalLength() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.getTotalLength();
-        } else {
-            return 0;
-        }
-    }
-
-    public int getCount() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        return videos.length;
-    }
-
-    public int getIndex() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        if (videos.length == 0) return -1;
-        if (videos.length == 1) return 0;
-
-        ITreeItem item = fennecService.getLastTreeItem();
-        for (int i = 0; i < videos.length; i++) {
-            INodeEx node = videos[i].getReferenceNode();
-            IProposition prop = Vocabulary.nodeLocation(node, true);
-            if (prop.eval(item)) return i;
-        }
-        return 0;
-    }
-
-
-    public static IVideoControl newTreeItemVideoControl(AnalyzedResult ar,
-                                                        IFennecService fennecService) {
-        return new TreeItemVideoControl(ar, fennecService);
-    }
-
-    private TreeItemVideoControl(AnalyzedResult ar,
-                                 IFennecService fennecService) {
-        this.analyzedResult = ar;
-        this.fennecService = fennecService;
-    }
-
-    // This ArrayList ensures strong references of currently valid listeners.
-    private ArrayList<IMediaSyncEventListener> listeners;
-    public boolean addEventListener(IMediaSyncEventListener listener) {
-        WeakSyncTimer timer = WeakSyncTimer.getTimer();
-        timer.addEventListener(listener);
-        if (listeners == null) {
-            listeners = new ArrayList<IMediaSyncEventListener>(1);
-        }
-        listeners.add(listener);
-        
-        return true;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java
deleted file mode 100644
index 5a07264..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.mediator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.fennec.IFennecMediator;
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecServiceFactory;
-import org.eclipse.actf.ai.fennec.impl.FennecDOMReader;
-import org.eclipse.actf.ai.fennec.impl.FennecEntryImpl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerFactory;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-
-
-
-public class FennecMediatorImpl implements IFennecMediator {
-    private final IWebBrowserACTF webBrowser;
-
-    public ITreeManager newTreeManager(IFennecEntry entry) {
-        IDocumentEx doc = (IDocumentEx) webBrowser.getLiveDocument();
-
-        IFennecService fennecService;
-        if (entry != null) {
-            try {
-                fennecService = FennecServiceFactory.newFennecService(entry, doc);
-            } catch (Exception e) {
-                fennecService = FennecServiceFactory.newFennecServiceWithDefaultMetadata(doc);
-            }
-        } else {
-            fennecService = FennecServiceFactory.newFennecServiceWithDefaultMetadata(doc);
-        }
-        return TreeManagerFactory.newITreeManager(fennecService);
-    }
-
-    private IXMLStore getFennecStore(String url) {
-        IXMLStoreService ss = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLSelector selector = ss.getSelectorWithDocElem(FennecDOMReader.Fennec_DOCUMENT_ELEMENT_NAME,
-                                                          FennecDOMReader.Fennec_NAMESPACE_URI);
-        IXMLStore store = ss.getRootStore();
-        store = store.specify(selector);
-        if (store == null) return null;
-        selector = ss.getSelectorWithURI(url);
-        return store.specify(selector);
-    }
-
-    public IFennecEntry getDefaultFennecEntry() {
-        String url = webBrowser.getURL();
-        IXMLStore store = getFennecStore(url);
-        if (store == null) return null;
-        Iterator<IXMLInfo> it = store.getInfoIterator();
-        if (it == null) return null;
-        if (!it.hasNext()) return null;
-        IXMLInfo info = it.next();
-        return new FennecEntryImpl(info);
-    }
-
-    public IFennecEntry[] getFennecEntries() {
-        String url = webBrowser.getURL();
-        IXMLStore store = getFennecStore(url);
-        if (store == null) return null;
-        Iterator<IXMLInfo> it = store.getInfoIterator();
-        if (it == null) return null;
-        ArrayList<FennecEntryImpl> entries = new ArrayList<FennecEntryImpl>();
-        while (it.hasNext()) {
-            IXMLInfo info = it.next();
-            if (info == null) continue;
-            entries.add(new FennecEntryImpl(info));
-        }
-        IFennecEntry[] ea = new IFennecEntry[entries.size()];
-        ea = entries.toArray(ea);
-        return ea;
-    }
-
-    public void release() {
-        // this.dombycom.release();
-    }
-
-    public FennecMediatorImpl(IWebBrowserACTF webBrowser) {
-        this.webBrowser = webBrowser;
-    }
-}
-
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java
deleted file mode 100644
index c9bbbf0..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * IAccessKeyList interface defines methods to be implemented by the collection
- * of the access keys in a document.
- */
-public interface IAccessKeyList {
-	/**
-	 * @return the size of the collection.
-	 */
-	int size();
-
-	/**
-	 * @param index
-	 *            the index of the access key.
-	 * @return the code of the access key specified by the index.
-	 */
-	char getAccessKeyAt(int index);
-
-	/**
-	 * @param index
-	 *            the index of the access key.
-	 * @return the text information of the element on which the access key is
-	 *         declared.
-	 */
-	String getUIStringAt(int index);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java
deleted file mode 100644
index 7e4863b..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ILocation represents a location of the current position on the tree. This
- * interface is the place holder of the implementation. The implementation is
- * used only internal classes, but you can get a location and restore the
- * location through the ILocation.
- */
-public interface ILocation {
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java
deleted file mode 100644
index c201113..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ui.util.timer.SyncEventListener;
-
-/**
- * IMediaSyncEventListener is the place holder of the implementation of
- * {@link SyncEventListener} for media synchronization.
- * 
- * @see SyncEventListener
- */
-public interface IMediaSyncEventListener extends SyncEventListener {
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java
deleted file mode 100644
index 0a021a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ISoundControl interface defines the method to be implemented by the
- * collection of sound objects in a document. It can manage the volume of the
- * sound objects.
- */
-public interface ISoundControl {
-	/**
-	 * The states of sound volume.
-	 */
-	public enum VolumeState {
-		/**
-		 * volume is minimum.
-		 */
-		MIN,
-		/**
-		 * volume is maximum.
-		 */
-		MAX,
-		/**
-		 * volume is not MIN, MAX, and MUTE.
-		 */
-		OTHER,
-		/**
-		 * sound is muted.
-		 */
-		MUTE
-	}
-
-	/**
-	 * It mutes all sounds in the document.
-	 * 
-	 * @return whether the muting was succeeded or not.
-	 */
-	boolean muteMedia();
-
-	/**
-	 * All sound objects have a same state then the state will be returned,
-	 * otherwise {@link VolumeState#OTHER} is returned.
-	 * 
-	 * @return the state of the volume.
-	 * @see VolumeState
-	 */
-	VolumeState getVolumeState();
-
-	/**
-	 * Volume down all sound objects in default step width.
-	 * @return whether the volume down was succeeded or not.
-	 */
-	boolean volumeDownMedia();
-
-	/**
-	 * Volume up all sound objects in default step width.
-	 * @return whether the volume up was succeeded or not.
-	 */
-	boolean volumeUpMedia();
-
-	/**
-	 * Volume down all sound objects in minimal step width.
-	 * @return whether the volume down was succeeded or not.
-	 */
-	boolean minimalVolumeDownMedia();
-
-	/**
-	 * Volume up all sound objects in minimal step width.
-	 * @return whether the volume up was succeeded or not.
-	 */
-	boolean minimalVolumeUpMedia();
-
-	/**
-	 * @return the number of the sound objects.
-	 */
-	int getCount();
-
-	/**
-	 * @return the values of all sound volume.
-	 */
-	int[] getVolumes();
-
-	/**
-	 * @param volumes the values to be set.
-	 * @return whether the setting was succeeded or not.
-	 */
-	boolean setVolumes(int[] volumes);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java
deleted file mode 100644
index 58482b9..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ITable interface defines the methods to be implemented by the table
- * representation on the Fennec tree.
- */
-public interface ITable {
-	/**
-	 * @param idx
-	 *            the index of the row.
-	 * @return the row of the table specified the index.
-	 */
-	ITableRow getRow(int idx);
-
-	/**
-	 * @return the number of the columns of the table.
-	 */
-	int getColumnSize();
-
-	/**
-	 * @return the number of the rows of the table.
-	 */
-	int getRowSize();
-
-	/**
-	 * @return the text information of the table.
-	 */
-	String getTableString();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java
deleted file mode 100644
index d124d98..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ITableCell interface defines the methods to be implemented by the table cell
- * representation on the Fennec tree.
- */
-public interface ITableCell {
-	/**
-	 * @return the column position in the table. 
-	 */
-	int getColumn();
-
-	/**
-	 * @return the row position in the table.
-	 */
-	int getRow();
-
-	/**
-	 * @return the ITreeItem object corresponding to the cell.
-	 */
-	ITreeItem getItem();
-
-	/**
-	 * @return whether the cell is connected with the upper cell or not.
-	 */
-	boolean isConnectedWithUpCell();
-
-	/**
-	 * @return whether the cell is connected with the left next cell or not.
-	 */
-	boolean isConnectedWithLeftCell();
-
-	/**
-	 * @return the ITreeItem object for the row header of the cell.
-	 */
-	ITreeItem getRowHeader();
-
-	/**
-	 * @return the ITreeItem object for the column header of the cell.
-	 */
-	ITreeItem getColumnHeader();
-
-	/**
-	 * @return whether the cell is a cell in the table header.
-	 */
-	boolean isHeader();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java
deleted file mode 100644
index a386c48..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-
-
-/**
- * ITable interface defines the methods to be implemented by the table row
- * representation on the Fennec tree.
- */
-public interface ITableRow {
-    /**
-     * @return the all cells in the row.
-     */
-    ITableCell[] getTableCell();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java
deleted file mode 100644
index 8bfdb79..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.w3c.dom.Node;
-
-/**
- * ITreeItem interface defines the methods to be implemented by the
- * representation of the tree node of the Fennec tree.
- */
-public interface ITreeItem extends IEvalTarget {
-	/**
-	 * Get the parent item. If this is the root, return null.
-	 * 
-	 * @return the parent ITreeItem.
-	 */
-	ITreeItem getParent();
-
-	/**
-	 * Get the child items. Even if it has no children, return an empty array
-	 * (size == 0) instead of null.
-	 * 
-	 * @return the array of the child ITreeItems.
-	 */
-	ITreeItem[] getChildItems();
-
-	/**
-	 * @return the nth of the children of this parent.
-	 */
-	int getNth();
-
-	/**
-	 * @return the short text of the item.
-	 */
-	String getUIString();
-
-	/**
-	 * @return the long descriptive text of the item.
-	 */
-	String getDescription();
-
-	/**
-	 * This text is inappropriate to be notified to users.
-	 * 
-	 * @return the text to represent the item.
-	 */
-	String getNodeString();
-
-	/**
-	 * Heading level. 0 means this node is not a heading.
-	 * 
-	 * @return the heading level of the item.
-	 */
-	short getHeadingLevel();
-
-	/**
-	 * @return the URI of the link of this tree item if it has a link.
-	 */
-	String getLinkURI();
-
-	/**
-	 * @deprecated This is a deprecated API. It may breaks independence on
-	 *             content types.
-	 * @return the base node of the item.
-	 */
-	Object getBaseNode();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.util.vocab.IEvalTarget#getTerms()
-	 */
-	AbstractTerms getTerms();
-
-	// !FN!
-	/**
-	 * @return true if this item accepts some input.
-	 */
-	boolean isInputable();
-
-	// !FN!
-	/**
-	 * @return true if this item accepts click operations.
-	 */
-	boolean isClickable();
-
-	// !FN!
-	/**
-	 * @return true if this item contains some image.
-	 */
-	boolean isImage();
-
-	// !FN!
-	/**
-	 * @return [0]...mimetype [1]...URI [2] ... png clut URI
-	 */
-	String[] getStillPictureData();
-
-	/**
-	 * Click the item.
-	 * 
-	 * @return {@link ITreeManager#CLICKED} or {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int doClick() throws TreeManagerException;
-
-	/**
-	 * Optional API. Do not use it currently.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	int stay() throws TreeManagerException;
-
-	/**
-	 * Highlight the item.
-	 * 
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int highlight() throws TreeManagerException;
-
-	/**
-	 * Unhighlight the item.
-	 * 
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int unhighlight() throws TreeManagerException;
-
-	/**
-	 * Set focus to this item. This method only sets the input focus if
-	 * possible.
-	 * 
-	 * @return
-	 */
-	boolean setFocus();
-
-	/**
-	 * Set the text to this item. (This method may be used for a text edit
-	 * widget)
-	 * 
-	 * @param text the text to be set.
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int setText(String text) throws TreeManagerException;
-
-	/**
-	 * Return the set text.
-	 * @return the text of the item.
-	 * @throws TreeManagerException
-	 */
-	String getText() throws TreeManagerException;
-
-	// Form
-	/**
-	 * @return the index of the item in the radio group. 
-	 */
-	int getRadioIndex();
-
-	/**
-	 * @return the total number of radio buttons in the radio group.
-	 */
-	int getRadioTotal();
-
-	/**
-	 * @param indices the indices to be set to the item.
-	 */
-	void setSelectedIndices(int[] indices);
-
-	/**
-	 * @return the indices of the item.
-	 */
-	int[] getSelectedIndices();
-
-	/**
-	 * @return the number of the options in the item.
-	 */
-	int getOptionsCount();
-
-	/**
-	 * @param index the index of the option.
-	 * @return the text of the option specified the index.
-	 */
-	String getOptionTextAt(int index);
-
-	/**
-	 * @return the index of the item in the list.
-	 */
-	int getListIndex();
-
-	/**
-	 * @return the number of the lists item in the list including the item.
-	 */
-	int getListTotal();
-
-	/**
-	 * @return the label text of the item.
-	 */
-	public String getFormLabel();
-
-	// User Annotation.
-	/**
-	 * @param parent the target node to be serialized.
-	 * @return the serialized result in form of Node.
-	 */
-	Node serializeQuery(Node parent);
-
-	/**
-	 * @return the code of the access key declared of the item.
-	 */
-	char getAccessKey();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java
deleted file mode 100644
index 4b7dfd7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.util.vocab.IProposition;
-
-/**
- * ITreeManager interface defines high level methods of Fennec tree
- * representation. It is created using {@link IFennecService}, and it provides
- * function to manage the tree representation by using {@link IFennecService}
- * 
- * All goto**** methods are for updating the current position. These methods try
- * to update the current position to "****" which is readable by the
- * application. These method will return {@link ITreeManager#NOACTION} if the
- * updating is failed.
- */
-public interface ITreeManager {
-	// Status code.
-	/**
-	 * The tree is no changed, the tree did no action.
-	 */
-	int NOACTION = 0;
-	/**
-	 * The current position is moved.
-	 */
-	int MOVED = 1 << 0;
-	/**
-	 * The level of the current position is changed.
-	 */
-	int LEVEL_CHANGED = 1 << 1;
-	/**
-	 * It is not used.
-	 */
-	int TRANSFERRED = 1 << 2;
-	/**
-	 * The element of the current position is clicked.
-	 */
-	int CLICKED = 1 << 3;
-	/**
-	 * The element of the current position is changed.
-	 */
-	int CHANGED = 1 << 4;
-	/**
-	 * The parent of the element of the current position is changed.
-	 */
-	int PARENT_CHANGED = 1 << 5;
-	/**
-	 * An element is found in searching or something.
-	 */
-	int FOUND = 1 << 6;
-	/**
-	 * A {@link TreeManagerInterruptedException} is thrown.
-	 */
-	int UNDONE = 1 << 8;
-	/**
-	 * A {@link TreeManagerException} is thrown.
-	 */
-	int ERROR = 1 << 16;
-
-	// Status API
-	/**
-	 * @return the tree level of the current position.
-	 * @throws TreeManagerException
-	 */
-	int getLevel() throws TreeManagerException;
-
-	/**
-	 * @return the current item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem getActiveItem() throws TreeManagerException;
-
-	/**
-	 * Used for media control. It will be subject to change.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	ISoundControl getSoundControl() throws TreeManagerException;
-
-	/**
-	 * Used for media control. It will be subject to change.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	IVideoControl getVideoControl() throws TreeManagerException;
-
-	/**
-	 * Used for access key.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	IAccessKeyList getAccessKeyList() throws TreeManagerException;
-
-	/**
-	 * @return the siblings of the current item.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem[] getSiblings() throws TreeManagerException;
-
-	/**
-	 * initialize. API.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int initialize() throws TreeManagerException;
-
-	// Action APIs
-
-	/**
-	 * Tentative API. Do not use it currently.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int stay() throws TreeManagerException;
-
-	/**
-	 * @param doClick
-	 *            the children of the current item is updated when false. false
-	 *            is used when retrying because of interruption of operation.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int click(boolean doClick) throws TreeManagerException;
-
-	// Tree Navigation API
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoParent() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoFirstChild() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfSiblings() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfSiblings() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoPreviousSibling() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoNextSibling() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfPage() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfPage() throws TreeManagerException;
-
-	/**
-	 * @param back
-	 *            the direction of the traversing. true = backward, false =
-	 *            forward.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int traverse(boolean back) throws TreeManagerException;
-
-	// Search functions. (Extension)
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoPreviousLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoNextLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfLine() throws TreeManagerException;
-
-	/**
-	 * It searches a element matched with the <i>proposition</i>. All tree
-	 * items after the current position is tested to be matched in forward
-	 * direction. If the element matched with the <i>proposition</i> is found
-	 * then the current position is changed to the element or the current
-	 * position is not changed. If the searching reaches the end of the page
-	 * then the searching continues from the start of the page to the current
-	 * position.
-	 * 
-	 * @param proposition
-	 *            the instance of IProposition to be used for searching.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int findNext(IProposition proposition) throws TreeManagerException;
-
-	/**
-	 * This method is backward direction version of
-	 * {@link #findNext(IProposition)}.
-	 * 
-	 * @param proposition
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int findPrevious(IProposition proposition) throws TreeManagerException;
-
-	/**
-	 * @param target
-	 *            the anchor name to be searched.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int skipToAnchor(String target) throws TreeManagerException;
-
-	// Table Navigation API.
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoLeftCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoRightCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoUpCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoDownCell() throws TreeManagerException;
-
-	/**
-	 * @return the information of the current table which includes the current
-	 *         position.
-	 * @throws TreeManagerException
-	 */
-	int getActiveTableInfo() throws TreeManagerException;
-
-	/**
-	 * @return the information of the current table cell.
-	 * @throws TreeManagerException
-	 */
-	int getActiveTableCellInfo() throws TreeManagerException;
-
-	// Optional API.
-	/**
-	 * @return the root item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem getCurrentRootItem() throws TreeManagerException;
-
-	// Experimental API.
-	/**
-	 * This method is used when the analysis is failed because of load timing.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int analyze() throws TreeManagerException;
-
-	/**
-	 * @return the ILocation instance of the current position. the instance will
-	 *         be used for {@link #moveToLocation(ILocation)}
-	 * @throws TreeManagerException
-	 */
-	ILocation getCurrentLocation() throws TreeManagerException;
-
-	/**
-	 * @param location
-	 *            the location to which the current position is moved.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int moveToLocation(ILocation location) throws TreeManagerException;
-
-	// 
-	/**
-	 * All tree items of the tree representation by the Fennec metadata are
-	 * expanded at once.
-	 * 
-	 * @return the root item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem expandWholeTree() throws TreeManagerException;
-
-	/**
-	 * Change the current position to the end of page without readable checking.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfPageForFind() throws TreeManagerException;
-
-	/**
-	 * Execute the repairing function of the Flash objects.
-	 * 
-	 * @throws TreeManagerException
-	 */
-	void repairFlash() throws TreeManagerException;
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java
deleted file mode 100644
index 6f96350..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * IVideoControl interface defines the method to be implemented by the
- * collection of video objects in a document. The implementation has a focused
- * video which is located after the current reading position.
- */
-public interface IVideoControl {
-	/**
-	 * @param listener
-	 *            the listener to be executed.
-	 * @return true if the adding was succeeded.
-	 * @see IMediaSyncEventListener
-	 */
-	boolean addEventListener(IMediaSyncEventListener listener);
-
-	/**
-	 * The states of videos.
-	 */
-	public enum VideoState {
-		/**
-		 * The state is not in the other state.
-		 */
-		STATE_OTHER,
-		/**
-		 * The video is playing.
-		 */
-		STATE_PLAY,
-		/**
-		 * The video is stopped.
-		 */
-		STATE_STOP,
-		/**
-		 * The video is paused.
-		 */
-		STATE_PAUSE,
-		/**
-		 * The video is in fast forwarding.
-		 */
-		STATE_FASTFORWARD,
-		/**
-		 * The video is in fast reversing.
-		 */
-		STATE_FASTREVERSE,
-		/**
-		 * The video is waiting to complete buffering.
-		 */
-		STATE_WAITING
-	}
-
-	/**
-	 * The video state of the videos in the document. If at least one of video
-	 * is playing then the state is STATE_PLAYING.
-	 * 
-	 * @return the video state.
-	 */
-	VideoState getVideoState();
-
-	/**
-	 * Change the track of the current video to the previous one.
-	 * 
-	 * @return whether the changing was succeeded or not.
-	 */
-	boolean previousTrack();
-
-	/**
-	 * Change the track of the current video to the next one.
-	 * 
-	 * @return whether the changing was succeeded or not.
-	 */
-	boolean nextTrack();
-
-	/**
-	 * Stop all videos in the document including the current video.
-	 * 
-	 * @return whether the stopping was succeeded or not.
-	 */
-	boolean stopMedia();
-
-	/**
-	 * Play the current video.
-	 * 
-	 * @return whether the playing was succeeded or not.
-	 */
-	boolean playMedia();
-
-	/**
-	 * Pause all videos in the document including the current video, or resume
-	 * the current video.
-	 * 
-	 * @return whether the pausing was succeeded or not.
-	 */
-	boolean pauseMedia();
-
-	/**
-	 * Fast-reverse the current video.
-	 * 
-	 * @return whether the reversing was succeeded or not.
-	 */
-	boolean fastReverse();
-
-	/**
-	 * Fast-forward the current video.
-	 * 
-	 * @return whether the forwarding was succeeded or not.
-	 */
-	boolean fastForward();
-
-	/**
-	 * @return the current position of the current video in second.
-	 */
-	double getCurrentPosition();
-
-	/**
-	 * @return the total length of the current video in second.
-	 */
-	double getTotalLength();
-
-	/**
-	 * @return the number of the videos in the document.
-	 */
-	int getCount();
-
-	/**
-	 * @return the index of the current videos in the document. If there is no
-	 *         video then it returns -1.
-	 */
-	int getIndex();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java
deleted file mode 100644
index 014d599..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * TreeManagerException is thrown when the operation in ITreeManager is failed.
- */
-public class TreeManagerException extends Exception {
-	private static final long serialVersionUID = -715217633494025285L;
-
-	private final int status;
-
-	/**
-	 * @return the status code of the exception.
-	 */
-	public int getStatus() {
-		return status;
-	}
-
-	/**
-	 * @param status
-	 *            the status code of the exception.
-	 * @param message
-	 * @param cause
-	 * @see Exception#Exception(String, Throwable)
-	 */
-	public TreeManagerException(int status, String message, Throwable cause) {
-		super(message, cause);
-		this.status = status;
-	}
-
-	/**
-	 * @param status
-	 * @param message
-	 * @see Exception#Exception(String)
-	 */
-	public TreeManagerException(int status, String message) {
-		super(message);
-		this.status = status;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java
deleted file mode 100644
index 2cbdf4a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.treemanager.impl.TreeManagerImpl;
-
-/**
- * The factory class for ITreeManager.
- */
-public class TreeManagerFactory {
-	/**
-	 * It creates a new instance of ITreeManager from an IFennecService.
-	 * 
-	 * @param fennecService
-	 *            the instance of the IFennecService to be used in the tree
-	 *            manager.
-	 * @return new instance of the ITreeManager.
-	 */
-	public static ITreeManager newITreeManager(IFennecService fennecService) {
-		return new TreeManagerImpl(fennecService);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java
deleted file mode 100644
index bc28b36..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * TreeManagerInterruptedException is thrown when the tree operation is
- * interrupted by some reason.
- */
-public class TreeManagerInterruptedException extends TreeManagerException {
-	private static final long serialVersionUID = -1029176053941063206L;
-
-	/**
-	 * @param status
-	 * @param message
-	 * @param cause
-	 * @see TreeManagerException#TreeManagerException(int, String, Throwable)
-	 */
-	public TreeManagerInterruptedException(int status, String message,
-			Throwable cause) {
-		super(status, message, cause);
-	}
-
-	/**
-	 * @param status
-	 * @param message
-	 * @see TreeManagerException#TreeManagerException(int, String)
-	 */
-	public TreeManagerInterruptedException(int status, String message) {
-		super(status, message);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java
deleted file mode 100644
index b870d11..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class TreeManagerPlugin extends Plugin {
-
-	//The shared instance.
-	private static TreeManagerPlugin plugin;
-	
-	/**
-	 * The constructor.
-	 */
-	public TreeManagerPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-    public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-    public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static TreeManagerPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java
deleted file mode 100644
index 69138fe..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-
-
-
-class LocationImpl implements ILocation {
-    private final int[] pos;
-    
-    int[] getPos() {
-        return pos;
-    }
-    
-    LocationImpl(int[] pos) {
-        this.pos = pos;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java
deleted file mode 100644
index ed7b0de..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java
+++ /dev/null
@@ -1,604 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerInterruptedException;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class TreeManagerImpl implements ITreeManager {
-    private IFennecService fennecService;
-
-    public TreeManagerImpl(IFennecService fennecService) {
-        this.fennecService = fennecService;
-    }
-
-    public int getLevel() throws TreeManagerException {
-        int i = 0;
-        ITreeItem ita = getActiveItem();
-        if (ita == null)
-            return 0;
-        while (true) {
-            ita = ita.getParent();
-            if (ita == null)
-                break;
-            i++;
-        }
-        return i;
-    }
-
-    public ITreeItem getActiveItem() throws TreeManagerException {
-        return fennecService.getLastTreeItem();
-    }
-
-    public ITreeItem[] getSiblings() throws TreeManagerException {
-        ITreeItem item = getActiveItem();
-        if (item == null)
-            return null;
-        ITreeItem parent = item.getParent();
-        if (parent == null) {
-            ITreeItem[] itas = new ITreeItem[1];
-            itas[0] = getActiveItem();
-            return itas;
-        }
-        return parent.getChildItems();
-    }
-
-    private void initFennecService() throws TreeManagerException {
-        if (fennecService.getStatus() == IFennecService.NORMAL)
-            return;
-        try {
-            fennecService.initialize();
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, e.getMessage(), e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, e.getMessage(), e);
-        }
-    }
-
-    public int initialize() throws TreeManagerException {
-        initFennecService();
-        return ITreeManager.NOACTION;
-    }
-
-    private int moveUpdate(ITreeItem target, boolean update) throws TreeManagerException {
-        try {
-            return fennecService.moveUpdate(target, update);
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to update by move.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to update by move.", e);
-        }
-    }
-
-    private int clickUpdate(ITreeItem target) throws TreeManagerException {
-        try {
-            return fennecService.clickUpdate(target);
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to update by click.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to update by click.", e);
-        }
-    }
-
-    private int gotoRoot() throws TreeManagerException {
-        ITreeItem parent = getActiveItem().getParent();
-        if (parent == null)
-            return ITreeManager.NOACTION;
-        while (gotoParent() != ITreeManager.NOACTION)
-            ;
-        return ITreeManager.MOVED | ITreeManager.LEVEL_CHANGED;
-    }
-
-    public int stay() throws TreeManagerException {
-        initFennecService();
-        return getActiveItem().stay();
-    }
-
-    public int click(boolean doClick) throws TreeManagerException {
-        initFennecService();
-        ITreeItem item = getActiveItem();
-        if (doClick)
-            item.doClick();
-        return clickUpdate(item);
-    }
-
-    public int gotoParent() throws TreeManagerException {
-        initFennecService();
-        ITreeItem parent = getActiveItem().getParent();
-        if (parent != null) {
-            int st = moveUpdate(parent, true);
-            if ((st & ITreeManager.MOVED) != 0)
-                st |= ITreeManager.LEVEL_CHANGED;
-            return st;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoFirstChild() throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length == 0)
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(childItems[0], true);
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    private int gotoLastChild() throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length == 0)
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(childItems[childItems.length - 1], true);
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    private int gotoSiblingIndex(int idx) throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] siblingItems = getSiblings();
-        if ((idx < 0) || (siblingItems.length <= idx) || (active.equals(siblingItems[idx])))
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(siblingItems[idx], true);
-        return st;
-    }
-
-    private int getActiveIndex() throws TreeManagerException {
-        initFennecService();
-        return getActiveItem().getNth();
-    }
-
-    public int gotoStartOfSiblings() throws TreeManagerException {
-        return gotoSiblingIndex(0);
-    }
-
-    public int gotoEndOfSiblings() throws TreeManagerException {
-        initFennecService();
-        ITreeItem[] siblingItems = getSiblings();
-        int st = moveUpdate(siblingItems[siblingItems.length - 1], true);
-        return st | ITreeManager.MOVED;
-    }
-
-    public int gotoPreviousSibling() throws TreeManagerException {
-        int idx = getActiveIndex();
-        return gotoSiblingIndex(idx - 1);
-    }
-
-    public int gotoNextSibling() throws TreeManagerException {
-        int idx = getActiveIndex();
-        return gotoSiblingIndex(idx + 1);
-    }
-
-    public int gotoStartOfPage() throws TreeManagerException {
-        ITreeItem item = getCurrentRootItem();
-        int st;
-        st = moveUpdate(item, true);
-        return ITreeManager.NOACTION;
-
-        /*
-         ITreeItem[] childItems = item.getChildItems();
-         int st;
-         if ((childItems != null) && (childItems.length > 0)) {
-         st = moveUpdate(childItems[0], true);
-         } else {
-         st = moveUpdate(item, true);
-         }
-         if ((st & ITreeManager.MOVED) != 0)
-         st |= ITreeManager.LEVEL_CHANGED;
-         return st;*/
-    }
-
-    public int gotoEndOfPageForFind() throws TreeManagerException {
-        // TODO
-        int st;
-        this.gotoStartOfPage();
-        do {
-            st = this.gotoEndOfSiblings();
-        } while (this.gotoFirstChild() != ITreeManager.NOACTION);
-
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    public int gotoEndOfPage() throws TreeManagerException {
-        // TODO
-        int st;
-        this.gotoStartOfPage();
-        do {
-            st = this.gotoEndOfSiblings();
-        } while (this.gotoFirstChild() != ITreeManager.NOACTION);
-
-        ITreeItem item = getActiveItem();
-        while (!Vocabulary.hasReadingContent().eval(item)) {
-            st = this.traverse(true);
-            item = getActiveItem();
-        }
-
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    public int gotoPreviousLine() throws TreeManagerException {
-        // TODO
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoNextLine() throws TreeManagerException {
-        // TODO
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoStartOfLine() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoEndOfLine() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    private int findItem(boolean back, IProposition proposition) throws TreeManagerException {
-        try {
-            ITreeItem item;
-            int[] pos = getActivePos();
-            int level = pos.length;
-            int rc;
-            if (back) {
-                // First, traverse to the next item in order to skip the items
-                // connectable with the current item.
-                rc = traverse(true);
-                item = getActiveItem();
-                if (proposition.eval(item)) {
-                    rc |= ITreeManager.FOUND;
-                } else {
-                    rc = fennecService.searchBackward(proposition);
-                }
-            } else {
-                // Likewise.
-                rc = traverse(false);
-                item = getActiveItem();
-                if (proposition.eval(item)) {
-                    rc |= ITreeManager.FOUND;
-                } else {
-                    rc = fennecService.searchForward(proposition);
-                }
-            }
-            if ((rc & ITreeManager.FOUND) == 0) {
-                setActivePos(pos);
-                return rc;
-            }
-            item = getActiveItem();
-            if (back) {
-                // Skip to the interval start.
-                ITreeItem siblings[] = getSiblings();
-                int idx = item.getNth();
-                int st = intervalStart(siblings, idx);
-                if (idx != st) {
-                    rc |= moveUpdate(siblings[st], false);
-                }
-                item = getActiveItem();
-            }
-            if (!Vocabulary.hasReadingContent().eval(item)) {
-                traverse(false);
-            }
-            if (level != getLevel()) {
-                rc |= ITreeManager.LEVEL_CHANGED;
-            }
-            return rc;
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to search.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to search.", e);
-        }
-    }
-
-    private int[] getActivePos() throws TreeManagerException {
-        int[] ret = new int[getLevel()];
-        ITreeItem current = getActiveItem();
-        int count = ret.length;
-        while (count > 0) {
-            ret[count - 1] = current.getNth();
-            count--;
-            current = current.getParent();
-        }
-        return ret;
-    }
-
-    private int setActivePos(int[] indexes) throws TreeManagerException {
-        gotoRoot();
-        ITreeItem item;
-        int st = ITreeManager.NOACTION;
-        for (int i = 0; i < indexes.length; i++) {
-            item = getActiveItem();
-            ITreeItem[] children = item.getChildItems();
-            int idx = indexes[i];
-            if ((children == null) || (idx >= children.length))
-                break;
-            st |= moveUpdate(children[idx], true);
-        }
-        return st;
-    }
-
-    public int findNext(IProposition proposition) throws TreeManagerException {
-        return findItem(false, proposition);
-    }
-
-    public int findPrevious(IProposition proposition) throws TreeManagerException {
-        return findItem(true, proposition);
-    }
-
-    private int traverseForward(ITreeItem active) throws TreeManagerException {
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length != 0) {
-            int st = moveUpdate(childItems[0], false);
-            return st;
-        }
-        int idx = active.getNth();
-        ITreeItem[] siblings = getSiblings();
-        if ((idx >= 0) && ((idx + 1) < siblings.length)) {
-            int st = moveUpdate(siblings[idx + 1], false);
-            return st;
-        }
-
-        for (int upCount = 1;; upCount++) {
-            active = getActiveItem();
-            ITreeItem parent = active.getParent();
-            if (parent == null) {
-                for (; upCount > 0; upCount--) {
-                    gotoLastChild();
-                }
-                return ITreeManager.NOACTION;
-            }
-            if (moveUpdate(parent, false) == ITreeManager.NOACTION) {
-                throw new TreeManagerException(ITreeManager.ERROR, "Internal Error.");
-            }
-            idx = getActiveIndex();
-            siblings = getSiblings();
-            if ((idx >= 0) && ((idx + 1) < siblings.length)) {
-                int st = moveUpdate(siblings[idx + 1], false);
-                return st;
-            }
-        }
-    }
-
-    private int traverseBackward() throws TreeManagerException {
-        int idx = getActiveIndex();
-        if (idx <= 0) {
-            ITreeItem active = getActiveItem();
-            ITreeItem parent = active.getParent();
-            if (parent == null)
-                return ITreeManager.NOACTION;
-            int st = moveUpdate(parent, false);
-            return st;
-        }
-        ITreeItem[] siblings = getSiblings();
-        int st = moveUpdate(siblings[idx - 1], false);
-
-        for (;;) {
-            ITreeItem active = getActiveItem();
-            ITreeItem[] childItems = active.getChildItems();
-            if (childItems.length == 0)
-                break;
-            st |= moveUpdate(childItems[0], false) | ITreeManager.LEVEL_CHANGED;
-            siblings = getSiblings();
-            if (siblings.length > 1) {
-                st |= moveUpdate(siblings[siblings.length - 1], false);
-            }
-        }
-        return st;
-    }
-
-    private int intervalStart(ITreeItem[] siblings, int st) {
-        for (st = st - 1;; st--) {
-            if (st < 0)
-                return 0;
-            if (!Vocabulary.isConnectable().eval(siblings[st]))
-                return st + 1;
-        }
-    }
-
-    private int intervalEnd(ITreeItem[] siblings, int end) {
-        for (; end < siblings.length; end++) {
-            if (!Vocabulary.isConnectable().eval(siblings[end]))
-                return end;
-        }
-        return end - 1;
-    }
-
-    public int traverse(boolean back) throws TreeManagerException {
-        initFennecService();
-        ITreeItem orig = getActiveItem();
-        ITreeItem current = orig;
-        int level = getLevel();
-        int rc = ITreeManager.NOACTION;
-
-        if (back) {
-            do {
-                rc = traverseBackward();
-                current = getActiveItem();
-            } while ((rc != ITreeManager.NOACTION)
-                    && (!Vocabulary.hasReadingContent().eval(current)));
-            ITreeItem siblings[] = getSiblings();
-            int idx = current.getNth();
-            int st = intervalStart(siblings, idx);
-            if (idx != st) {
-                rc |= moveUpdate(siblings[st], false);
-            }
-        } else {
-            ITreeItem siblings[] = getSiblings();
-            int idx = current.getNth();
-            int end = intervalEnd(siblings, idx);
-            current = siblings[end];
-            do {
-                rc = traverseForward(current);
-                current = getActiveItem();
-            } while ((rc != ITreeManager.NOACTION)
-                    && (!Vocabulary.hasReadingContent().eval(current)));
-        }
-
-        if (!orig.equals(current)) {
-            // rc |= ITreeManager.MOVED;
-            if (level != getLevel()) {
-                rc |= ITreeManager.LEVEL_CHANGED;
-            }
-        }
-
-        return rc;
-    }
-
-    public String[] getActiveStrings() throws TreeManagerException {
-        initFennecService();
-        ArrayList al = new ArrayList();
-        ITreeItem[] siblings = getSiblings();
-        for (int i = getActiveIndex(); i < siblings.length; i++) {
-            ITreeItem current = siblings[i];
-            String str = current.getUIString();
-            if (str.length() > 0) {
-                al.add(str);
-            }
-            ITreeItem[] childItems = current.getChildItems();
-            if (childItems.length > 0)
-                break;
-        }
-        return (String[]) al.toArray(new String[0]);
-    }
-
-    public int gotoLeftCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoRightCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoUpCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoDownCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getActiveTableInfo() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getActiveTableCellInfo() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public ITreeItem getCurrentRootItem() throws TreeManagerException {
-        initFennecService();
-        ITreeItem parent, current;
-        current = getActiveItem();
-        while (true) {
-            parent = current.getParent();
-            if (parent == null)
-                break;
-            current = parent;
-        }
-        return current;
-    }
-
-    public ISoundControl getSoundControl() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getSoundControl();
-    }
-
-    public IVideoControl getVideoControl() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getVideoControl();
-    }
-
-    public IAccessKeyList getAccessKeyList() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getAccessKeyList();
-    }
-
-    public int analyze() throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.analyze();
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to analyze", e);
-        }
-    }
-
-    public ILocation getCurrentLocation() throws TreeManagerException {
-        initFennecService();
-        return new LocationImpl(getActivePos());
-    }
-
-    public int moveToLocation(ILocation location) throws TreeManagerException {
-        initFennecService();
-        LocationImpl loc = (LocationImpl) location;
-        int[] pos = loc.getPos();
-        return setActivePos(pos);
-    }
-
-    public ITreeItem expandWholeTree() throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.expandWholeTree();
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to expand the whole tree", e);
-        }
-    }
-
-    public int skipToAnchor(String target) throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.skipToAnchor(target);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to find the target in the anchors", e);
-        }
-    }
-    
-    public void repairFlash() throws TreeManagerException {
-        initFennecService();
-        IFlashNode[] node = fennecService.getFlashTopNodes();
-        for (int i = 0; i < node.length; i++) {
-            node[i].repairFlash();
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java
deleted file mode 100644
index 1dc866a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.fennec;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class FennecPlugin extends Plugin {
-
-	// The shared instance.
-	private static FennecPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public FennecPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static FennecPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.classpath b/plugins/org.eclipse.actf.ai.key.keyui/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore b/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.project b/plugins/org.eclipse.actf.ai.key.keyui/.project
deleted file mode 100644
index dde0dad..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.key.keyui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.actf.ai.key.keyui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f22d82a..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Jan 06 15:26:02 JST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF
deleted file mode 100644
index 52e7767..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Key UI Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.key.keyui;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.key.keyui.KeyUIPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.ui,
- org.eclipse.actf.ai.navigator,
- org.eclipse.actf.util.win32.comclutch
-Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/about.html b/plugins/org.eclipse.actf.ai.key.keyui/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/build.properties b/plugins/org.eclipse.actf.ai.key.keyui/build.properties
deleted file mode 100644
index 8f739ba..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml b/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml
deleted file mode 100644
index c64fb80..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.navigator.Navigation">
-      <manipulator class="org.eclipse.actf.ai.key.keyui.impl.KeyUIImpl"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties b/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties
deleted file mode 100644
index e0ebc07..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties
+++ /dev/null
@@ -1,239 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-openTab=Open
-closeTab=Close
-
-traverseDown=Next Node
-traverseUp=Previous Node
-click=Click
-nextLink=Next Link
-previousLink=Previous Link
-
-searchNext=Find Next
-searchPrevious=Find Previous
-
-treeTop=Top Node
-treeBottom=Last Node
-
-nextHeader=Next Header
-previousHeader=Previous Header
-nextObject=Next Object
-previousObject=Previous Object
-nextInputable=Next Inputable
-previousInputable=Previous Inputable
-
-nextListItem=Next Item of List
-previousListItem=Previous Item of List
-
-nextBlock=Next Text Block
-previousBlock=Previous Text Block
-
-selectNextFennec=Select Fennec data
-forceRestart=Content re-Aanalyse
-toggleDescriptionEnable=Audio Description On/Off
-  
-showAccessKeyList=Show Accesskey List
-speakCurrentStatus=Speak Current Status
-speakMediaStatus=Speak Media Status
-
-nextTab=Next Tab
-prevTab=Previous Tab
-
-playMedia=Play Video
-stopMedia=Stop Video
-pauseMedia=Pause Video
-  
-muteMedia=Mute Volume
-volumeDownMedia=Volume Down
-volumeUpMedia=Volume Up
-
-launchBrowser=Open in Default Browser
-toggleLeftViewsShowing=Open / Close Tree View
-speakAll=Say all
-
-importMetadata=Import Fennec data...
-exportMetadata=Export User Annotation...
-exportAllMetadata=Export All User Annotations...
-
-nextMedia=Next Media
-previousMedia=Previous Media
-
-saveUserInfo=Save Annotation
-removeUserInfo=Remove All Annotation
-editAltText=Edit Alt. Text
-makeLandmark=Set / Unset a Landmark
-nextAlterable=Next Alterable Item
-previousAlterable=Previous Alterable Item
-
-navigateRefresh=Refresh
-forward=Forward
-backward=Backward
-enterBrowserAddress=Enter Address
-
-nextHeader1=Next Header Level 1
-nextHeader2=Next Header Level 2
-nextHeader3=Next Header Level 3
-nextHeader4=Next Header Level 4
-nextHeader5=Next Header Level 5
-nextHeader6=Next Header Level 6
-
-previousHeader1=Previous Header Level 1
-previousHeader2=Previous Header Level 2
-previousHeader3=Previous Header Level 3
-previousHeader4=Previous Header Level 4
-previousHeader5=Previous Header Level 5
-previousHeader6=Previous Header Level 6
-
-minimalVolumeDownMedia=Volume Down (minimum step)
-minimalVolumeUpMedia=Volume Up (minimum step)
-speechSpeedDown=Speech Speed Down
-speechSpeedUp=Speech Speed Up
-
-repairFlash=Repair Flash content
-
-Key.OR=or
-
-
-CMD_PASSTHROUGH=Pass Through
-
-CMD_NOOP=No Operation
-
-CMD_MUTEMEDIA=Mute Volume
-
-CMD_VOLUMEDOWNMEDIA=Volume Down
-
-CMD_VOLUMEUPMEDIA=Volume Up
-
-CMD_PREVIOUSTRACK=Previous Track
-
-CMD_NEXTTRACK=Next Track
-
-CMD_STOPMEDIA=Stop Video
-
-CMD_PLAYMEDIA=Play Video
-
-CMD_PAUSEMEDIA=Pause Video
-
-CMD_FASTREVERSE=Rewind Video
-
-CMD_FASTFORWARD=Forward Video
-
-CMD_SPEECHSPEEDUP=Speed Up Speech
-
-CMD_SPEECHSPEEDDOWN=Speed Down Speech
-
-CMD_TREELEFT=Tree Left
-
-CMD_TREERIGHT=Tree Right
-
-CMD_TREEUP=Tree Up
-
-CMD_TREEDOWN=Tree Down
-
-CMD_TREETOP=Tree Top
-
-CMD_TREEBOTTOM=Tree Bottom
-
-CMD_TRAVERSENODEDOWN=Next Node
-
-CMD_TRAVERSENODEUP=Previous Node
-
-CMD_TRAVERSEDOWN=Next Item
-
-CMD_TRAVERSEUP=Previous Item
-
-CMD_CLICK=Click
-
-CMD_CELLLEFT=Cell Left
-
-CMD_CELLRIGHT=Cell Right
-
-CMD_CELLUP=Cell Up
-
-CMD_CELLDOWN=Cell Down
-
-CMD_STARTAUTOPLAY=Auto Play
-
-CMD_ENDAUTOPLAY=Stop Auto Play
-
-CMD_AUTOPLAYMINSPEED=Min Speed Auto Play
-
-CMD_AUTOPLAYMAXSPEED=Max Speed Auto Play
-
-CMD_AUTOPLAYDEFAULTSPEED=Default Speed Auto Play
-
-CMD_AUTOPLAYNOP=Auto Play No Operation
-
-CMD_AUTOPLAYSLOWER=Slower Auto Play
-
-CMD_AUTOPLAYFASTER=Faster Auto Play
-
-CMD_NEXTHEADER=Next Header
-
-CMD_PREVIOUSHEADER=Previous Header
-
-CMD_NEXTINPUTABLE=Next Input
-
-CMD_PREVIOUSINPUTABLE=Previous Input
-
-CMD_HOME=Go to top of page
-
-CMD_END=Go to end of page
-
-CMD_SELECTNEXTFennec=Select Fennec data
-
-CMD_ENTERBROWSERADDRESS=Edit Address
-
-CMD_FORCERESTART=Content re-Aanalyse
-
-CMD_NAVIGATEREFRESH=Refrefh
-
-CMD_SPEAKCURRENTSTATUS=Speak Current Status
-
-CMD_NEXTLINK=Next Link
-
-CMD_PREVIOUSLINK=Previous Link
-
-CMD_NEXTOBJECT=Next Object
-
-CMD_PREVIOUSOBJECT=Previous Object
-
-CMD_EXIT_FORM_MODE=Exit Form Mode
-
-CMD_FORM_IGNORE_KEY=Form Ignore Key
-
-CMD_FORM_SUBMIT=Form Submit
-
-CMD_TOGGLE_DESCRIPTION_ENABLE=Audio Description
-
-CMD_TAKE_BACK_CONTROL=Take Back Control
-
-CMD_CLOSETAB=Close Tab
-    
-CMD_NEXTTAB=Next Tab
-
-CMD_PREVTAB=Prev Tab
-    
-CMD_GO_FORWARD=Go Forward
-   
-CMD_GO_BACKWORD=Go Backward
-
-CMD_OPEN=Open
-
-CMD_SPEED_UP=Speed Up
-
-CMD_SPEED_DOWN=Speed Down
-
-CMD_PLAY_NEXT=Play Next
-
-CMD_PLAY_PREV=Play Prev
-    
-CMD_START_RECORDING=Start Recording
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties
deleted file mode 100644
index 9bef2fb..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties
+++ /dev/null
@@ -1,239 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-openTab=\u958b\u304f
-closeTab=\u9589\u3058\u308b
-
-traverseDown=\u6b21\u306e\u9805\u76ee
-traverseUp=\u524d\u306e\u9805\u76ee
-click=\u30af\u30ea\u30c3\u30af
-nextLink=\u6b21\u306e\u30ea\u30f3\u30af
-previousLink=\u524d\u306e\u30ea\u30f3\u30af
-
-searchNext=\u6b21\u3092\u691c\u7d22
-searchPrevious=\u524d\u3092\u691c\u7d22
-
-treeTop=\u5148\u982d\u306e\u9805\u76ee\u3078
-treeBottom=\u6700\u5f8c\u306e\u9805\u76ee\u3078
-
-nextHeader=\u6b21\u306e\u898b\u51fa\u3057\u3078
-previousHeader=\u524d\u306e\u898b\u51fa\u3057\u3078
-nextObject=\u6b21\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-previousObject=\u524d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-nextInputable=\u6b21\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-previousInputable=\u524d\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-nextListItem=\u6b21\u306e\u30ea\u30b9\u30c8\u9805\u76ee\u3078
-previousListItem=\u524d\u306e\u30ea\u30b9\u30c8\u9805\u76ee\u3078
-
-nextBlock=\u6b21\u306e\u30c6\u30ad\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u3078
-previousBlock=\u524d\u306e\u30c6\u30ad\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u3078
-
-selectNextFennec=Fennec\u5916\u90e8\u60c5\u5831\u306e\u5207\u308a\u66ff\u3048
-forceRestart=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u518d\u89e3\u6790
-toggleDescriptionEnable=\u97f3\u58f0\u89e3\u8aac\u306e\u30aa\u30f3\u30fb\u30aa\u30d5
-  
-showAccessKeyList=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a
-speakCurrentStatus=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-speakMediaStatus=\u30e1\u30c7\u30a3\u30a2\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-
-nextTab=\u6b21\u306e\u30bf\u30d6
-prevTab=\u524d\u306e\u30bf\u30d6
-
-playMedia=\u30d3\u30c7\u30aa\u306e\u518d\u751f
-stopMedia=\u30d3\u30c7\u30aa\u306e\u505c\u6b62
-pauseMedia=\u30d3\u30c7\u30aa\u306e\u4e00\u6642\u505c\u6b62
-  
-muteMedia=\u6d88\u97f3
-volumeDownMedia=\u97f3\u91cf\u5c0f
-volumeUpMedia=\u97f3\u91cf\u5927
-
-launchBrowser=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304f
-toggleLeftViewsShowing=\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u958b\u304f\uff0f\u9589\u3058\u308b
-speakAll=\u5168\u3066\u8aad\u4e0a\u3052
-
-importMetadata=Fennec \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f...
-exportMetadata=\u6ce8\u91c8\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u51fa\u3057...
-exportAllMetadata=\u5168\u3066\u306e\u6ce8\u91c8\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u51fa\u3057...
-
-nextMedia=\u6b21\u306e\u30e1\u30c7\u30a3\u30a2
-previousMedia=\u524d\u306e\u30e1\u30c7\u30a3\u30a2
-
-saveUserInfo=\u6ce8\u91c8\u306e\u30bb\u30fc\u30d6
-removeUserInfo=\u6ce8\u91c8\u3092\u5168\u3066\u524a\u9664
-editAltText=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6
-makeLandmark=\u3057\u304a\u308a\u306e\u8ffd\u52a0\uff0f\u524a\u9664
-nextAlterable=\u6b21\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u7de8\u96c6\u70b9
-previousAlterable=\u524d\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u7de8\u96c6\u70b9
-
-navigateRefresh=\u6700\u65b0\u306e\u60c5\u5831\u306b\u66f4\u65b0
-forward=\u9032\u3080
-backward=\u623b\u308b
-enterBrowserAddress=\u30a2\u30c9\u30ec\u30b9\u5165\u529b
-
-nextHeader1=\u6b21\u306e\u30ec\u30d9\u30eb\uff11\u306e\u898b\u51fa\u3057
-nextHeader2=\u6b21\u306e\u30ec\u30d9\u30eb\uff12\u306e\u898b\u51fa\u3057
-nextHeader3=\u6b21\u306e\u30ec\u30d9\u30eb\uff13\u306e\u898b\u51fa\u3057
-nextHeader4=\u6b21\u306e\u30ec\u30d9\u30eb\uff14\u306e\u898b\u51fa\u3057
-nextHeader5=\u6b21\u306e\u30ec\u30d9\u30eb\uff15\u306e\u898b\u51fa\u3057
-nextHeader6=\u6b21\u306e\u30ec\u30d9\u30eb\uff16\u306e\u898b\u51fa\u3057
-
-previousHeader1=\u524d\u306e\u30ec\u30d9\u30eb\uff11\u306e\u898b\u51fa\u3057
-previousHeader2=\u524d\u306e\u30ec\u30d9\u30eb\uff12\u306e\u898b\u51fa\u3057
-previousHeader3=\u524d\u306e\u30ec\u30d9\u30eb\uff13\u306e\u898b\u51fa\u3057
-previousHeader4=\u524d\u306e\u30ec\u30d9\u30eb\uff14\u306e\u898b\u51fa\u3057
-previousHeader5=\u524d\u306e\u30ec\u30d9\u30eb\uff15\u306e\u898b\u51fa\u3057
-previousHeader6=\u524d\u306e\u30ec\u30d9\u30eb\uff16\u306e\u898b\u51fa\u3057
-
-minimalVolumeDownMedia=\u97f3\u91cf\u5c0f\uff08\u6700\u5c0f\u5e45\uff09
-minimalVolumeUpMedia=\u97f3\u91cf\u5927\uff08\u6700\u5c0f\u5e45\uff09
-speechSpeedDown=\u8aad\u4e0a\u3052\u901f\u5ea6\u9045\u304f
-speechSpeedUp=\u8aad\u4e0a\u3052\u901f\u5ea6\u901f\u304f
-
-repairFlash=Flash\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4fee\u5fa9
-
-Key.OR=\u3082\u3057\u304f\u306f
-
-CMD_PASSTHROUGH=\u901a\u904e
-
-CMD_NOOP=\u64cd\u4f5c\u306a\u3057
-
-CMD_MUTEMEDIA=\u6d88\u97f3
-
-CMD_VOLUMEDOWNMEDIA=\u97f3\u91cf\u5927
-
-CMD_VOLUMEUPMEDIA=\u97f3\u91cf\u5c0f
-
-CMD_PREVIOUSTRACK=\u524d\u306e\u30c8\u30e9\u30c3\u30af\u3078
-
-CMD_NEXTTRACK=\u6b21\u306e\u30c8\u30e9\u30c3\u30af\u3078
-
-CMD_STOPMEDIA=\u30d3\u30c7\u30aa\u505c\u6b62
-
-CMD_PLAYMEDIA=\u30d3\u30c7\u30aa\u518d\u751f
-
-CMD_PAUSEMEDIA=\u30d3\u30c7\u30aa\u4e00\u6642\u505c\u6b62
-
-CMD_FASTREVERSE=\u30d3\u30c7\u30aa\u5dfb\u304d\u623b\u3057
-
-CMD_FASTFORWARD=\u30d3\u30c7\u30aa\u65e9\u9001\u308a
-
-CMD_SPEECHSPEEDUP=\u8aad\u4e0a\u3052\u901f\u5ea6\u901f\u304f
-
-CMD_SPEECHSPEEDDOWN=\u8aad\u4e0a\u3052\u901f\u5ea6\u9045\u304f
-
-CMD_TREELEFT=\u30c4\u30ea\u30fc\u5de6\u3078
-
-CMD_TREERIGHT=\u30c4\u30ea\u30fc\u53f3\u3078
-
-CMD_TREEUP=\u30c4\u30ea\u30fc\u4e0a\u3078
-
-CMD_TREEDOWN=\u30c4\u30ea\u30fc\u4e0b\u3078
-
-CMD_TREETOP=\u30c4\u30ea\u30fc\u6700\u521d\u3078
-
-CMD_TREEBOTTOM=\u30c4\u30ea\u30fc\u6700\u5f8c\u3078
-
-CMD_TRAVERSENODEDOWN=\u6b21\u306e\u30ce\u30fc\u30c9\u3078
-
-CMD_TRAVERSENODEUP=\u524d\u306e\u30ce\u30fc\u30c9\u3078
-
-CMD_TRAVERSEDOWN=\u6b21\u306e\u9805\u76ee\u3078
-
-CMD_TRAVERSEUP=\u524d\u306e\u9805\u76ee\u3078
-
-CMD_CLICK=\u30af\u30ea\u30c3\u30af
-
-CMD_CELLLEFT=\u5de6\u306e\u30bb\u30eb\u3078
-
-CMD_CELLRIGHT=\u53f3\u306e\u30bb\u30eb\u3078
-
-CMD_CELLUP=\u4e0a\u306e\u30bb\u30eb\u3078
-
-CMD_CELLDOWN=\u4e0b\u306e\u30bb\u30eb\u3078
-
-CMD_STARTAUTOPLAY=\u81ea\u52d5\u8aad\u4e0a\u3052
-
-CMD_ENDAUTOPLAY=\u81ea\u52d5\u8aad\u4e0a\u3052\u505c\u6b62
-
-CMD_AUTOPLAYMINSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u6700\u5c0f\u901f\u5ea6
-
-CMD_AUTOPLAYMAXSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u6700\u5927\u901f\u5ea6
-
-CMD_AUTOPLAYDEFAULTSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901a\u5e38\u901f\u5ea6
-
-CMD_AUTOPLAYNOP=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u64cd\u4f5c\u306a\u3057
-
-CMD_AUTOPLAYSLOWER=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901f\u5ea6\u9045\u304f
-
-CMD_AUTOPLAYFASTER=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901f\u5ea6\u901f\u304f
-
-CMD_NEXTHEADER=\u6b21\u306e\u30d8\u30c3\u30c0\u30fc\u3078
-
-CMD_PREVIOUSHEADER=\u524d\u306e\u30d8\u30c3\u30c0\u30fc\u3078
-
-CMD_NEXTINPUTABLE=\u6b21\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-CMD_PREVIOUSINPUTABLE=\u524d\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-CMD_HOME=\u30da\u30fc\u30b8\u306e\u5148\u982d\u3078
-
-CMD_END=\u30da\u30fc\u30b8\u306e\u6700\u5f8c\u3078
-
-CMD_SELECTNEXTFennec=Fennec \u30c7\u30fc\u30bf\u306e\u5207\u308a\u66ff\u3048
-
-CMD_ENTERBROWSERADDRESS=\u30a2\u30c9\u30ec\u30b9\u5165\u529b
-
-CMD_FORCERESTART=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u518d\u89e3\u6790
-
-CMD_NAVIGATEREFRESH=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5
-
-CMD_SPEAKCURRENTSTATUS=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-
-CMD_NEXTLINK=\u6b21\u306e\u30ea\u30f3\u30af\u3078
-
-CMD_PREVIOUSLINK=\u524d\u306e\u30ea\u30f3\u30af\u3078
-
-CMD_NEXTOBJECT=\u6b21\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-
-CMD_PREVIOUSOBJECT=\u524d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-
-CMD_EXIT_FORM_MODE=\u30d5\u30a9\u30fc\u30e0\u30e2\u30fc\u30c9\u7d42\u4e86
-
-CMD_FORM_IGNORE_KEY=Form Ignore Key
-
-CMD_FORM_SUBMIT=\u9001\u4fe1\u30dc\u30bf\u30f3
-
-CMD_TOGGLE_DESCRIPTION_ENABLE=\u97f3\u58f0\u89e3\u8aac
-
-CMD_TAKE_BACK_CONTROL=\u30c6\u30a4\u30af\u30d0\u30c3\u30af\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb
-
-CMD_CLOSETAB=\u30bf\u30d6\u3092\u9589\u3058\u308b
-    
-CMD_NEXTTAB=\u6b21\u306e\u30bf\u30d6\u3078
-
-CMD_PREVTAB=\u524d\u306e\u30bf\u30d6\u3078
-    
-CMD_GO_FORWARD=\u9032\u3080
- 
-CMD_GO_BACKWORD=\u623b\u308b
-
-CMD_OPEN=\u958b\u304f
-
-CMD_SPEED_UP=\u901f\u5ea6\u901f\u304f
-
-CMD_SPEED_DOWN=\u901f\u5ea6\u9045\u304f
-
-CMD_PLAY_NEXT=\u6b21\u3092\u518d\u751f
-
-CMD_PLAY_PREV=\u524d\u3092\u518d\u751f
-    
-CMD_START_RECORDING=\u9332\u97f3\u958b\u59cb
-
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java
deleted file mode 100644
index 8d60c3a..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.key.keyui;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class KeyUIPlugin extends Plugin {
-
-    //The shared instance.
-    private static KeyUIPlugin plugin;
-	
-    /**
-     * The constructor.
-     */
-    public KeyUIPlugin() {
-        plugin = this;
-    }
-
-    /**
-     * This method is called upon plug-in activation
-     */
-    @Override
-    public void start(BundleContext context) throws Exception {
-        super.start(context);
-    }
-
-    /**
-     * This method is called when the plug-in is stopped
-     */
-    @Override
-    public void stop(BundleContext context) throws Exception {
-        super.stop(context);
-        plugin = null;
-    }
-
-    /**
-     * Returns the shared instance.
-     */
-    public static KeyUIPlugin getDefault() {
-        return plugin;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java
deleted file mode 100644
index 3982248..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.key.keyui;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-
-
-/**
- * This provides the resource string.
- */
-public class Messages {
-    private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
-
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
-    private Messages() {
-    }
-    
-    /**
-     * @param key The name of the resouce string.
-     * @return The string specified the key.
-     */
-    public static String getString(String key) {
-        // TODO Auto-generated method stub
-        try {
-            return RESOURCE_BUNDLE.getString(key);
-        } catch (MissingResourceException e) {
-            return '!' + key + '!';
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java
deleted file mode 100644
index 336a543..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.key.keyui.impl;
-
-import java.awt.event.KeyEvent;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.key.keyui.Messages;
-import org.eclipse.actf.ai.key.keyui.impl.KeyUIImpl.KC.Type;
-import org.eclipse.actf.ai.navigator.IBrowserControl;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.INavigatorUI;
-import org.eclipse.actf.ai.navigator.ui.NavigatorUIUtil;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.util.win32.comclutch.ComPlugin;
-import org.eclipse.actf.util.win32.keyhook.IKeyHook;
-import org.eclipse.actf.util.win32.keyhook.IKeyHookListener;
-import org.eclipse.actf.util.win32.keyhook.ISendEvent;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-
-public class KeyUIImpl implements IKeyHookListener, IManipulator {
-    private static boolean initialized = false;
-
-    public static final String PREFERENCES_NS = "http://www.ibm.com/xmlns/prod/AcTF/aiBrowser/preferences/1.0";
-
-    public static final int CMD_PASSTHROUGH = -1;
-
-    public static final int CMD_NOOP = 9999;
-
-    // for demo
-    public static final int CMD_SPEED_UP = 1300;
-
-    public static final int CMD_SPEED_DOWN = 1301;
-
-    public static final int CMD_PLAY_NEXT = 1302;
-
-    public static final int CMD_PLAY_PREV = 1303;
-
-    public static final int CMD_START_RECORDING = 1304;
-
-    private static final int VK_RETURN = 13;
-
-    private IManipulator.Mode mode = null;
-
-    private IBrowserControl browserControl;
-
-    private INavigatorUI navigatorUI;
-
-    private HashMap<KeyEntry, KC> keyConfigMapForTreeNavigation = new HashMap<KeyEntry, KC>();
-
-    private static IKeyHook keyHook;
-
-    private static ISendEvent sendEvent;
-
-    public KeyUIImpl() {
-        if (!initialized) {
-            initialized = true;
-            initialize();
-        }
-    }
-
-    public void initialize() {
-        keyHook = ComPlugin.getDefault().newKeyHook(this);
-        sendEvent = ComPlugin.getDefault().newSendEvent();
-
-        IXMLStoreService xmlStoreService = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLSelector selector = xmlStoreService.getSelectorWithDocElem("UserPreferences", PREFERENCES_NS);
-        IXMLStore rootStore = xmlStoreService.getRootStore();
-        IXMLStore specifiedStroe = rootStore.specify(selector);
-        for (Iterator<IXMLInfo> i = specifiedStroe.getInfoIterator(); i.hasNext();) {
-            IXMLInfo info = i.next();
-            try {
-                read(info.getRootNode());
-            } catch (XMLStoreException e) {
-                e.printStackTrace();
-            }
-        }
-        
-        initAccessKey();
-    }
-    
-    private void initAccessKey() {
-        for (int i = 0; i < 10; i++) {
-            KC kc = new KC(KC.Type.ACCESSKEY, KeyEvent.VK_0 + i, KeyEvent.SHIFT_MASK | KeyEvent.ALT_MASK, null);
-            register(kc);
-        }
-        for (int i = 0; i < 26; i++) {
-            KC kc = new KC(KC.Type.ACCESSKEY, KeyEvent.VK_A + i, KeyEvent.SHIFT_MASK | KeyEvent.ALT_MASK, null);
-            register(kc);
-        }
-    }
-
-    private void read(Node rootNode) {
-        NodeList children = rootNode.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node commands = children.item(i);
-            KC.Type type = KC.Type.COMMAND;
-
-            if (commands.getNodeType() != Node.ELEMENT_NODE)
-                continue;
-
-            if (commands.getLocalName().equals("Commands")) {
-                type = KC.Type.COMMAND;
-            } else if (commands.getLocalName().equals("Functions")) {
-                type = KC.Type.FUNCTION;
-            } else {
-                continue;
-            }
-
-            NodeList commandList = commands.getChildNodes();
-
-            for (int j = 0; j < commandList.getLength(); j++) {
-                Node command = commandList.item(j);
-
-                if (command.getNodeType() != Node.ELEMENT_NODE)
-                    continue;
-
-                NodeList keyList = command.getChildNodes();
-
-                ArrayList<KC> array = new ArrayList<KC>();
-                for (int k = 0; k < keyList.getLength(); k++) {
-                    Node key = keyList.item(k);
-
-                    if (key.getNodeType() != Node.ELEMENT_NODE)
-                        continue;
-
-                    KC kc = createKC(type, command, key);
-                    register(kc);
-
-                    if (!"none".equals(((Element) key).getAttribute("display")))
-                        array.add(kc);
-                }
-                addMenu(commands, command, array);
-            }
-        }
-    }
-
-    private KC createKC(Type type, Node command, Node key) {
-        String name = command.getLocalName();
-        int vkey = 0;
-        int mod = 0;
-        if ("key".equals(key.getLocalName()) && PREFERENCES_NS.equals(key.getNamespaceURI())) {
-            String stroke = key.getTextContent();
-            stroke = stroke.trim();
-            String[] keys = stroke.split("[ \n\t\r]+");
-            for (int j = 0; j < keys.length; j++) {
-                try {
-                    if ("VK_RETURN".equals(keys[j])) {
-                        vkey = VK_RETURN;
-                    } else if (keys[j].startsWith("VK_")) {
-                        Field f = KeyEvent.class.getField(keys[j]);
-                        vkey = f.getInt(KeyEvent.class);
-                    } else if (keys[j].endsWith("_MASK")) {
-                        Field f = KeyEvent.class.getField(keys[j]);
-                        mod |= f.getInt(KeyEvent.class);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return new KC(type, vkey, mod, name);
-    }
-
-    private void addMenu(Node commands, Node command, ArrayList<KC> kc) {
-        String menuName = ((Element) commands).getAttribute("menu");
-        if (menuName.length() == 0)
-            return;
-        String groupName = ((Element) commands).getAttribute("menuGroup");
-        if (groupName.length() == 0)
-            return;
-        String name = command.getLocalName();
-
-        IMenuManager menu = NavigatorUIUtil.menuManager;
-        IMenuManager menu2 = menu.findMenuUsingPath(menuName);
-
-        if ("separator".equals(name)) {
-            menu2.appendToGroup(groupName, new Separator());
-        } else {
-            menu2.appendToGroup(groupName, new KeyAction(name, kc));
-        }
-    }
-
-    static class KeyEntry {
-        int vkey;
-
-        int mod;
-
-        @Override
-        public int hashCode() {
-            return (vkey | mod << 16);
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (!(o instanceof KeyEntry))
-                return false;
-            KeyEntry e = (KeyEntry) o;
-            return ((e.vkey == vkey) && (e.mod == mod));
-        }
-
-        KeyEntry(int vkey, int mod) {
-            this.vkey = vkey;
-            this.mod = mod;
-        }
-    }
-
-    private void register(KC kc) {
-        keyConfigMapForTreeNavigation.put(new KeyEntry(kc.vkey, kc.mod), kc);
-        keyHook.registerHookedKey(kc.vkey, kc.mod);
-    }
-
-    static class KC {
-        enum Type {
-            COMMAND, FUNCTION, NOOP, ACCESSKEY
-        }
-
-        int vkey;
-
-        int mod;
-
-        Type type;
-
-        String name;
-        
-        enum Target {
-            INAVIGATORUI, IBROWSERCONTROL
-        }
-        
-        Target target;
-
-        Method method;
-
-        int command;
-        
-        KC(Type type, int vkey, int mod, String name) {
-            this.type = type;
-            this.vkey = vkey;
-            this.mod = mod;
-            this.name = name;
-
-            if (type == Type.FUNCTION) {
-            	try {
-            		method = INavigatorUI.class.getMethod(name);
-                    target = Target.INAVIGATORUI;
-            	} catch (Exception e) {
-            		method = null;
-            	}
-            	
-                if (method == null) {
-                	try {
-                		method = IBrowserControl.class.getMethod(name);
-                        target = Target.IBROWSERCONTROL;
-                	} catch (Exception e){
-                        System.err.println("No such method:" + name);
-                	}
-                }
-            } else if (type == Type.COMMAND) {
-                try {
-                    Field field = KeyUIImpl.class.getField("CMD_" + name);
-                    command = field.getInt(KeyUIImpl.class);
-                } catch (SecurityException e) {
-                    e.printStackTrace();
-                } catch (NoSuchFieldException e) {
-                    e.printStackTrace();
-                } catch (IllegalArgumentException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
-    public boolean hookedKey(int vkey, int modifier, boolean isUp) {
-        if (mode == IManipulator.TREE_NAVIGATION_MODE) {
-            KC kc = (KC) keyConfigMapForTreeNavigation.get(new KeyEntry(vkey, modifier));
-            if (kc != null) {
-                if (kc.type == KC.Type.COMMAND && kc.command == CMD_NOOP)
-                    return true;
-                if (kc.type != KC.Type.ACCESSKEY && kc.method == null)
-                    return false;
-                
-                /*
-                if (vkey == VK_RETURN) {
-                    if (!isUp)
-                        call(kc);
-                } else {
-                    if (isUp)
-                        call(kc);
-                }*/
-                if (!isUp)
-                    call(kc);
-
-                return true;
-            }
-        } else if (mode == IManipulator.FORM_INPUT_MODE) {
-            switch (vkey) {
-            case KeyEvent.VK_TAB:
-                break;
-            case VK_RETURN:
-                // navigatorUI.submitForm();
-                sendEvent.postKey(vkey, isUp);
-                break;
-            case KeyEvent.VK_ESCAPE:
-                navigatorUI.exitFormMode();
-                break;
-            default:
-                return false;
-            }
-            return true;
-        } else if (mode == IManipulator.KEYHOOK_DISABLED_MODE) {
-            return false;
-        }
-        return false;
-    }
-
-    private void call(KC kc) {
-        if (kc.type == KC.Type.COMMAND) {
-            switch (kc.command) {
-            // for demo
-            case CMD_SPEED_UP:
-                sendKey(KeyEvent.VK_UP, true);
-                break;
-            case CMD_SPEED_DOWN:
-                sendKey(KeyEvent.VK_DOWN, true);
-                break;
-            case CMD_PLAY_NEXT:
-                sendKey(KeyEvent.VK_RIGHT, false);
-                break;
-            case CMD_PLAY_PREV:
-                sendKey(KeyEvent.VK_LEFT, false);
-                break;
-            case CMD_START_RECORDING:
-                sendKey(KeyEvent.VK_S, true);
-                break;
-            case CMD_NOOP:
-            case CMD_PASSTHROUGH:
-                break;
-            }
-        } else if (kc.type == KC.Type.FUNCTION) {
-            try {
-                switch (kc.target) {
-                case IBROWSERCONTROL:
-                    if (browserControl != null)
-                        kc.method.invoke(browserControl, new Object[0]);
-                    break;
-                case INAVIGATORUI:
-                    if (navigatorUI != null)
-                        kc.method.invoke(navigatorUI, new Object[0]);
-                    break;
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } else if (kc.type == KC.Type.ACCESSKEY) {
-            navigatorUI.jumpToAccessKey((char) kc.vkey);
-        }
-    }
-
-    private void sendKey(int key, boolean ctrlFlag) {
-        long h = sendEvent.findWindow("SWT_Window0", "Sound Controller");
-        if (ctrlFlag) {
-            sendEvent.postKeyToWindow(h, KeyEvent.VK_CONTROL, false);
-        }
-        sendEvent.postKeyToWindow(h, key, false);
-        sendEvent.postKeyToWindow(h, key, true);
-        if (ctrlFlag) {
-            sendEvent.postKeyToWindow(h, KeyEvent.VK_CONTROL, true);
-        }
-    }
-
-    public void setNavigator(INavigatorUI navigatorUI) {
-        this.navigatorUI = navigatorUI;
-    }
-
-    public void setBrowserControl(IBrowserControl browserControl) {
-        this.browserControl = browserControl;
-    }
-
-    public void dispose() {
-        keyHook.dispose();
-    }
-
-    public void setMode(Mode mode) {
-        this.mode = mode;
-        if (mode == IManipulator.FORM_INPUT_MODE) {
-            keyHook.hookAll(true);
-        } else if (mode == IManipulator.KEYHOOK_DISABLED_MODE) {
-            keyHook.hookAll(false);
-        } else {
-            keyHook.hookAll(false);
-        }
-    }
-
-    class KeyAction extends Action {
-        String name;
-
-        ArrayList<KC> kcs;
-
-        public KeyAction(String name, ArrayList<KC> kcs) {
-            super();
-            this.name = name;
-            this.kcs = kcs;
-
-            StringBuffer sb = new StringBuffer();
-            sb.append(Messages.getString(name));
-            if (kcs.size() > 0)
-                sb.append("    (" + getKey(kcs) + ")");
-
-            setText(sb.toString());
-        }
-
-        private String getKey(ArrayList<KC> kcs) {
-            StringBuffer sb = new StringBuffer();
-
-            for (int i = 0; i < kcs.size(); i++) {
-                if (i != 0)
-                    sb.append(" " + Messages.getString("Key.OR") + " ");
-
-                int vkey = kcs.get(i).vkey;
-                int mod = kcs.get(i).mod;
-
-                if (is(mod, KeyEvent.CTRL_MASK)) {
-                    sb.append("Ctrl+");
-                }
-                if (is(mod, KeyEvent.ALT_MASK)) {
-                    sb.append("Alt+");
-                }
-                if (is(mod, KeyEvent.SHIFT_MASK)) {
-                    sb.append("Shift+");
-                }
-                String key = "";
-                if (('0' <= vkey && vkey <= '9') || ('A' <= vkey && vkey <= 'Z')) {
-                    key = "" + (char) vkey;
-                } else if (KeyEvent.VK_F1 <= vkey && vkey <= KeyEvent.VK_F24) {
-                    key = "F" + (vkey - KeyEvent.VK_F1 + 1);
-                } else {
-                    switch (vkey) {
-                    case VK_RETURN:
-                        key = "Enter";
-                        break;
-                    case KeyEvent.VK_UP:
-                        key = "Up";
-                        break;
-                    case KeyEvent.VK_DOWN:
-                        key = "Down";
-                        break;
-
-                    case KeyEvent.VK_LEFT:
-                        key = "Left";
-                        break;
-                    case KeyEvent.VK_RIGHT:
-                        key = "Right";
-                        break;
-
-                    case KeyEvent.VK_HOME:
-                        key = "Home";
-                        break;
-                    case KeyEvent.VK_END:
-                        key = "End";
-                        break;
-                    case KeyEvent.VK_PAGE_UP:
-                        key = "PageUp";
-                        break;
-                    case KeyEvent.VK_PAGE_DOWN:
-                        key = "PageDown";
-                        break;
-
-                    case KeyEvent.VK_TAB:
-                        key = "Tab";
-                        break;
-                    case KeyEvent.VK_PAUSE:
-                        key = "Pause";
-                        break;
-                    case KeyEvent.VK_SPACE:
-                        key = "Space";
-                        break;
-                    }
-                }
-                sb.append(key);
-            }
-
-            return sb.toString();
-        }
-
-        private boolean is(int a, int b) {
-            return (a & b) == b;
-        }
-
-        @Override
-        public void run() {
-            if (kcs.size() > 0)
-                call(kcs.get(0));
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/.classpath b/plugins/org.eclipse.actf.ai.navigator/.classpath
deleted file mode 100644
index 304e861..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.navigator/.cvsignore b/plugins/org.eclipse.actf.ai.navigator/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.navigator/.project b/plugins/org.eclipse.actf.ai.navigator/.project
deleted file mode 100644
index 9821f58..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.navigator</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index e613298..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Jun 06 23:23:23 JST 2007
-eclipse.preferences.version=1
-encoding//src/messages.properties=8859_1
diff --git a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index b345ae4..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Tue Jan 06 15:26:17 JST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF
deleted file mode 100644
index 8c41ebb..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,25 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Navigator Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.navigator;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.navigator.NavigatorPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.actf.core,
- org.eclipse.actf.ai.fennec,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.model.ui,
- org.eclipse.actf.model.ui.editors.ie,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.actf.ai.audio.io,
- org.eclipse.actf.ai.voice,
- org.eclipse.actf.ui,
- com.ibm.icu
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.navigator,
- org.eclipse.actf.ai.navigator.impl,
- org.eclipse.actf.ai.navigator.ui
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.actf.ai.navigator/about.html b/plugins/org.eclipse.actf.ai.navigator/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/build.properties b/plugins/org.eclipse.actf.ai.navigator/build.properties
deleted file mode 100644
index bb3f22a..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml,\
-               plugin.properties,\
-               plugin_ja.properties,\
-               icons/,\
-               waiting.wav
diff --git a/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif b/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif
deleted file mode 100644
index dd54021..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif b/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif
deleted file mode 100644
index ffe678f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin.properties b/plugins/org.eclipse.actf.ai.navigator/plugin.properties
deleted file mode 100644
index 862084d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-DeleteAction.name=Clear metadata cache
-DeleteAction.tip=Clear metadata cache
-
-NavigationTreeView.name=Navigation by Tree View
-UserAnnotation=User Annotation
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin.xml b/plugins/org.eclipse.actf.ai.navigator/plugin.xml
deleted file mode 100644
index 916a927..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="Navigation" name="Navigation" schema="schema/Navigation.exsd"/>
-   <extension-point id="ScreenReaderController" name="ScreenReaderController" schema="schema/ScreenReaderController.exsd"/>
-   <extension-point id="MediaControl" name="MediaControl" schema="schema/MediaControl.exsd"/>
-   <extension-point id="MetadataCacheCleaner" name="MetadataCacheCleaner" schema="schema/MetadataCacheCleaner.exsd"/>
-   <extension
-         point="org.eclipse.ui.views">
-      <view
-            category="org.eclipse.actf.ai.ui.views"
-            class="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-            icon="icons/treex16.gif"
-            id="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-            name="%NavigationTreeView.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            category="org.eclipse.actf.ui.preferences.RootPreferencePage"
-            class="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferencePage"
-            id="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferencePage"
-            name="%UserAnnotation"/>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer class="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferenceInitializer"/>
-   </extension>
-   <extension
-         point="org.eclipse.actf.ai.navigator.MetadataCacheCleaner">
-      <cleaner class="org.eclipse.actf.ai.navigator.impl.FennecEntryCacheCleaner"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties b/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties
deleted file mode 100644
index d861478..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-DeleteAction.name=\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u524a\u9664
-DeleteAction.tip=\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u524a\u9664\u3057\u307e\u3059
-
-NavigationTreeView.name=\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30fb\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc
-UserAnnotation=\u6ce8\u91c8
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd
deleted file mode 100644
index 461840d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="MediaControl" name="MediaControl"/>
-      </appinfo>
-      <documentation>
-         You can extend the user interface of media control to implement IMediaControl interface. 
-The media controller can control video, audio, browser and voice.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="controller"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="controller">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IMediaControl"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         The following is a example of description.
-&quot;class&quot; is a implementation of the IMediaControl interface.
-
-   &lt;extension
-         point=&quot;org.eclipse.actf.ai.navigator.MediaControl&quot;&gt;
-      &lt;controller class=&quot;org.eclipse.actf.ai.audio.description.impl.MediaControlImpl&quot;/&gt;
-   &lt;/extension&gt;
-   
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiInfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="copyright"/>
-      </appinfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-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 &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd
deleted file mode 100644
index 729457b..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="MetadataCacheClear" name="MetadataCacheClear"/>
-      </appinfo>
-      <documentation>
-         You can extend the chache clear action to implement IMetadataCacheCleaner interface. 
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="cleaner"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="cleaner">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IMetadataCacheCleaner"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         The following is a example of description.
-&quot;class&quot; is a implementation of the IMetadataCacheCleaner interface.
-
-   &lt;extension
-         point=&quot;org.eclipse.actf.ai.navigator.MetadataCacheCleaner&quot;&gt;
-      &lt;cleaner class=&quot;org.eclipse.actf.ai.navigator.impl.FennecEntryCacheCleaner&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiInfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="copyright"/>
-      </appinfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-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 &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd
deleted file mode 100644
index 32ae085..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="Navigation" name="Navigation"/>
-      </appinfo>
-      <documentation>
-         You can create new user interface for aiBrowser to implement INavigatorUI interface.
-
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="manipulator"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="manipulator">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IManipulator"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         The following is a example of description.
-&quot;class&quot; is a implementation of the INavigatorUI interface.
-
-   &lt;extension
-         point=&quot;org.eclipse.actf.ai.navigator.Navigation&quot;&gt;
-      &lt;manipulator class=&quot;org.eclipse.actf.ai.key.keyui.impl.KeyUIImpl&quot;/&gt;
-   &lt;/extension&gt;
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiInfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="copyright"/>
-      </appinfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-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 &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd
deleted file mode 100644
index a168e10..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
-      <appinfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="ScreenReaderController" name="ScreenReaderController"/>
-      </appinfo>
-      <documentation>
-         You can extend the user interface to work with screen reader software by implementing IScreenReaderControl interface.
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <annotation>
-         <appinfo>
-            <meta.element />
-         </appinfo>
-      </annotation>
-      <complexType>
-         <sequence>
-            <element ref="controller"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute translatable="true"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="controller">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appinfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IScreenReaderControl"/>
-               </appinfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-
-   <annotation>
-      <appinfo>
-         <meta.section type="examples"/>
-      </appinfo>
-      <documentation>
-         The following is a example of description.
-&quot;class&quot; is a implementation of the IScreenReaderControl interface.
-
-   &lt;extension
-         point=&quot;org.eclipse.actf.ai.navigator.ScreenReaderController&quot;&gt;
-      &lt;controller class=&quot;org.eclipse.actf.ai.screenreader.jaws.Jaws&quot;/&gt;
-   &lt;/extension&gt;
-
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="apiInfo"/>
-      </appinfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="implementation"/>
-      </appinfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appinfo>
-         <meta.section type="copyright"/>
-      </appinfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-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 &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
deleted file mode 100644
index 6390ffc..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-NavigatorTreeView_property=Property
-NavigatorTreeView_value=Value
-
-DialogOpenURL_Open_URL_2=Open a page
-
-IManipulator_TreeNavigaion=Tree Navigation
-IManipulator_FormInput=Form Input
-IManipulator_Input=Input
-FormInputDialog_Textarea=Text Area Input
-FormInputDialog_Password=Password Input
-FormInputDialog_Text=Text Input
-FormInputDialog_Search=Find Text
-FormInputDialog_Forward=&Forward
-FormInputDialog_Backward=&Backward
-FormInputDialog_Exact=&Case Sensitive
-
-FormSelectDialog_Single=Select an option
-FormSelectDialog_Multiple=Select options
-
-AccessKeyListDialog_Title=Access Key List
-
-AltInputDialog_Text=Alt Text Input
-
-UserInfo_PREFERENCES_NAME=User Annotation Preferences
-UserInfo_SAVE_ANNOTATION=&Save annotation automatically
-UserInfo_REFRESH_TREEVIEW=&Refresh Tree View automatically
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
deleted file mode 100644
index 715e65f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 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
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-NavigatorTreeView_property=\u30d7\u30ed\u30d1\u30c6\u30a3
-NavigatorTreeView_value=\u5024
-
-DialogOpenURL_Open_URL_2=\u30da\u30fc\u30b8\u3092\u958b\u304f
-
-IManipulator_TreeNavigaion=\u30c4\u30ea\u30fc\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3
-IManipulator_FormInput=\u30d5\u30a9\u30fc\u30e0\u5165\u529b
-IManipulator_Input=\u5165\u529b
-FormInputDialog_Textarea=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5165\u529b
-FormInputDialog_Password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5165\u529b
-FormInputDialog_Text=\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
-FormInputDialog_Search=\u6587\u5b57\u5217\u306e\u691c\u7d22
-FormInputDialog_Forward=\u4e0b\u3078(&F)
-FormInputDialog_Backward=\u4e0a\u3078(&B)
-FormInputDialog_Exact=\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b(&C)
-
-FormSelectDialog_Single=\u9805\u76ee\u306e\u9078\u629e
-FormSelectDialog_Multiple=\u9805\u76ee\u306e\u8907\u6570\u9078\u629e
-
-AccessKeyListDialog_Title=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8
-
-AltInputDialog_Text=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
-
-UserInfo_PREFERENCES_NAME=\u6ce8\u91c8\u306e\u8a2d\u5b9a
-UserInfo_SAVE_ANNOTATION=\u81ea\u52d5\u7684\u306b\u6ce8\u91c8\u3092\u4fdd\u5b58\u3059\u308b(&S)
-UserInfo_REFRESH_TREEVIEW=\u81ea\u52d5\u7684\u306b\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u3059\u308b(&R)
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
deleted file mode 100644
index 026b852..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.navigator;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class Messages extends NLS {
-
-	private static final String BUNDLE_NAME = "messages";//$NON-NLS-1$
-
-	private Messages() {
-		// Do not instantiate
-	}
-
-	public static String NavigatorTreeView_property;
-	public static String NavigatorTreeView_value;
-	public static String DialogOpenURL_Open_URL_2;
-	public static String IManipulator_TreeNavigaion;
-	public static String IManipulator_FormInput;
-	public static String IManipulator_Input;
-	public static String FormInputDialog_Textarea;
-	public static String FormInputDialog_Password;
-	public static String FormInputDialog_Text;
-	public static String FormInputDialog_Search;
-	public static String FormInputDialog_Forward;
-	public static String FormInputDialog_Backward;
-	public static String FormInputDialog_Exact;
-	public static String FormSelectDialog_Single;
-	public static String FormSelectDialog_Multiple;
-	public static String AccessKeyListDialog_Title;
-	public static String AltInputDialog_Text;
-	public static String UserInfo_PREFERENCES_NAME;
-	public static String UserInfo_SAVE_ANNOTATION;
-	public static String UserInfo_REFRESH_TREEVIEW;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java
deleted file mode 100644
index 3e4a660..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.navigator;
-
-import org.eclipse.actf.ai.navigator.extension.MetadataCacheCleanerExtension;
-import org.eclipse.actf.ai.navigator.views.NavigatorTreeView;
-import org.eclipse.actf.ai.tts.AbstractUIPluginForTTS;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class NavigatorPlugin extends AbstractUIPluginForTTS {
-
-	public static final String ID = "org.eclipse.actf.ai.navigator";
-	// The shared instance.
-	private static NavigatorPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public NavigatorPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static NavigatorPlugin getDefault() {
-		return plugin;
-	}
-
-	private NavigatorTreeView navigatorTreeView;
-
-	/**
-	 * To share the instance of the Navigator Tree View in this plug-in.
-	 * 
-	 * @param navigatorTreeView
-	 *            An instance of the Navigator Tree View.
-	 */
-	public void setNavigatorTreeView(NavigatorTreeView navigatorTreeView) {
-		this.navigatorTreeView = navigatorTreeView;
-	}
-
-	/**
-	 * @return The shared instance of the Navigator Tree View.
-	 */
-	public NavigatorTreeView getNavigatorTreeView() {
-		return navigatorTreeView;
-	}
-
-	/**
-	 * Clear the memory cache of the metadata.
-	 */
-	public void clearMetadataCache() {
-		MetadataCacheCleanerExtension.clearCache();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java
deleted file mode 100644
index 85aac28..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-/**
- * IBrowserControl defines the methods to be implemented on the top of the browser.
- * All functions are not bound together with one tab.
- * Although the forward and the backward action is bound to one tab in general, 
- * the forward and the backward operates the action over the tabs.
- */
-public interface IBrowserControl {
-    /**
-     * Forward to the next page.
-     */
-    void forward();
-    
-    /**
-     * Backward to the previous page.
-     */
-    void backward();
-    
-    /**
-     * Open the file dialog to import metadata files into the application storage.
-     */
-    void importMetadata();
-    
-    /**
-     * Open the file dialog to export all metadata files in the application storage.
-     */
-    void exportAllMetadata();
-
-    /**
-     * Open a new tab in the application.
-     */
-    void openTab();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
deleted file mode 100644
index 616f1c2..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-
-
-/**
- * IManipulator interface defines the methods to be implemented by the "manipulator"
- * of the application. For example keyboard manipulator, joy stick manipulator, and so on.
- * IManipulator can obtain instances of IBrowserControl and INavigatorUI.
- */
-public interface IManipulator {
-    /**
-     * This Mode class represents modes of the application.
-     */
-    public static class Mode {
-        public final String name;
-        public final int code;
-        private Mode(String name, int code) {
-            this.name = name;
-            this.code = code;
-        }
-    }
-    
-    /**
-     * The code of the tree navigation mode.
-     */
-    int TREE_NAVIGATION_MODE_CODE = 0;
-    
-    /**
-     * The instance of the Mode of the tree navigation mode.
-     * This is the default mode of the application.
-     */
-    Mode TREE_NAVIGATION_MODE = new Mode(Messages.IManipulator_TreeNavigaion, TREE_NAVIGATION_MODE_CODE); 
-    
-    /**
-     * The code of the form input mode.
-     */
-    int FORM_INPUT_MODE_CODE = 1;
-    
-    /**
-     * The instance of the Mode of the form input mode.
-     * This mode is used during the users input information into HTML forms.
-     */
-    Mode FORM_INPUT_MODE = new Mode(Messages.IManipulator_FormInput, FORM_INPUT_MODE_CODE); 
-    
-    /**
-     * The code of the key hook disabled mode.
-     */
-    int KEYHOOK_DISABLED_MODE_CODE = 2;
-    
-    /**
-     * The instance of the Mode of the key hook disabled mode.
-     * This mode is used during a dialog is shown.
-     */
-    Mode KEYHOOK_DISABLED_MODE = new Mode(Messages.IManipulator_Input, KEYHOOK_DISABLED_MODE_CODE); 
-
-    /**
-     * @param browserControl The instance of the IBrowserControl to be controlled by the manipulator.
-     */
-    void setBrowserControl(IBrowserControl browserControl);
-    /**
-     * @param navigatorUI The instance of the INavigatorUI to be controlled by the manipulator.
-     */
-    void setNavigator(INavigatorUI navigatorUI);
-    
-    /**
-     * @param mode The mode to be set
-     */
-    void setMode(Mode mode);
-    
-    /**
-     *  It will be called when the manipulator is disposed.
-     */
-    void dispose();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java
deleted file mode 100644
index 6e79760..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 2008 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.voice.IVoice;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-
-/**
- * IMediaControl interface defines the methods to be implemented by the 
- * user interfaces which controls browser, video, audio, and voice output.
- * Implementations of this interface are managed by MediaControl extension.
- */
-public interface IMediaControl {
-
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function isn't able to use. There is no extension.
-     * This status code is only used in the extenstion manager.
-     */
-    int TOGGLE_FAIL = 1;
-    
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function is enabled and the function is on.
-     */
-    int STATUS_ON = 2;
-    
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function is enabled and the function is off.
-     */
-    int STATUS_OFF = 4;
-    
-    /**
-	 * The status code used by {@link #toggleEnabled()}
-	 * The user interface function is not enabled.
-     */
-    int STATUS_NOT_AVAILABLE = 8;
-    
-    /**
-     * An instance of IHandle has video, sound, browser, and voice controller.
-     */
-    public interface IHandle {
-        IVideoControl getVideoControl();
-        ISoundControl getSoundControl();
-        IWebBrowserACTF getWebBrowser();
-        IVoice getVoice();
-    }
-    
-    /**
-     * The implementation of this extension is started by this methods with IHandle.
-     * This method will be called when a focus of a browser is activated.
-     * The <i>handle</i> contains the browser instance.
-     * @param handle An instance of IHandle.
-     */
-    void start(IHandle handle);
-    
-    /**
-     * This method will be called when a focus of a browser is deactivated.
-     * @param handle An instance of IHandle.
-     */
-    void dispose(IHandle handle);
-
-    /**
-     * Toggle the enabled of the user interface.
-     * If the user interface can be used then the status will be STATUS_ON or STATUS_OFF.
-     * If the user interface can not be used then the status will be STATUS_NOT_AVAILABLE.
-     * @return The status of after the toggle.
-     */
-    int toggleEnabled();
-    
-    /**
-     * @return The availability of the user interface.
-     */
-    boolean isAvailable();
-    
-    /**
-     * After calling method the view is shown then it returns true.
-     * @return Whether the view is shown or not.
-     */
-    boolean toggleViewShowing();
-
-    /**
-     * @return Whether the user interface is enabled or not.
-     */
-    boolean isEnabled();
-
-    /**
-     * The user interface should speak the status information of itself using
-     * the voice engine.
-     * @param flush This is used for the argument of speak method of the voice engine.
-     */
-    void speakInfo(boolean flush);
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java
deleted file mode 100644
index 165c8a6..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-/**
- * IMetadataCacheCleaner interface defines a method to clear the memory cache of the metadata.
- * The instances are managed by extension manager. 
- */
-public interface IMetadataCacheCleaner {
-    /**
-     * Clear the memory cache of the metadata.
-     * The application will read metadata again from the disk.
-     */
-    void clearCache();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java
deleted file mode 100644
index d44597b..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator;
-
-/**
- * INavigatorUI represents a browser tab of the application.
- * This interface defines methods to control browsers from user interface part.
- */
-public interface INavigatorUI {
-    // Tree Navigation Mode
-    /**
-     * Mute the media volume.
-     */
-    void muteMedia();
-    /**
-     * Decrease the volume of the media which are included in the browser.
-     */
-    void volumeDownMedia();
-    /**
-     * Increase the volume of the media which are included in the browser.
-     */
-    void volumeUpMedia();
-    /**
-     * Decrease the volume of the media in minimal step.
-     */
-    void minimalVolumeDownMedia();
-    /**
-     * Increase the volume of the media in minimal step.
-     */
-    void minimalVolumeUpMedia();
-    
-    /**
-     * Change the audio track to the previous one.
-     */
-    void previousTrack();
-    /**
-     * Change the audio track to the next one.
-     */
-    void nextTrack();
-    /**
-     * Stop the media.
-     */
-    void stopMedia();
-    /**
-     * Play the media. The medias should be controllable from the out of the application.
-     * For example, shortcut key or something.
-     */
-    void playMedia();
-    /**
-     * Pause the media.
-     */
-    void pauseMedia();
-    /**
-     * Do fast reverse of the media.
-     */
-    void fastReverse();
-    /**
-     * Do fast forward of the media.
-     */
-    void fastForward();
-    
-    /**
-     * Stop the speaking of the voice engine.
-     */
-    void stopSpeak();
-
-    /**
-     * Set the speed of the voice engine to faster.
-     */
-    void speechSpeedUp();
-    /**
-     * Set the speed of the voice engine to slower.
-     */
-    void speechSpeedDown();
-    
-    /**
-     * Move the current position to the tree parent. 
-     */
-    void treeLeft();
-    /**
-     * Move the current position to the tree children.
-     */
-    void treeRight();
-    /**
-     * Move the current position the the previous sibling.
-     * If there is a previous sibling then the current position will be the sibling.
-     * If there is no previous sibling then the current position will be not changed.
-     */
-    void treeUp();
-    /**
-     * Move the current position to the next sibling
-     * If there is a next sibling then the current position will be the sibling.
-     * If there is no next sibling then the current position will be not changed.
-     */
-    void treeDown();
-
-    /**
-     * Move the current position to the top of the tree. First node of the tree.
-     */
-    void treeTop();
-    /**
-     * Move the current position to the bottom of the tree. Last node of the tree.
-     */
-    void treeBottom();
-
-    /**
-     * Move the current position to the next node which can be read.
-     * The traverse is executed in depth first strategy.
-     */
-    void traverseDown();
-    /**
-     * Move the current position to the previous node which can be read.
-     * The traverse is executed in opposite direction of {@link #traverseDown()}.
-     */
-    void traverseUp();
-
-    /**
-     * Send click event or command to the node of the current position.
-     * The user can click the element by alternative way. 
-     */
-    void click();
-    /**
-     * Speak the current status of the application.
-     */
-    void speakCurrentStatus();
-    /**
-     * Speak the media status of the browser.
-     */
-    void speakMediaStatus();
-
-    /**
-     * Move the current position to the next header element. It will stop at H1, H2, H3, H4 ,H5, H6, and headers defined by the metadata.
-     */
-    void nextHeader();
-    /**
-     * Move the current position to the previous header element. It will stop at H1, H2, H3, H4 ,H5, H6, and headers defined by the metadata.
-     */
-    void previousHeader();
-
-    /**
-     * Move the current position to the next inputable element. Text input, text area, select and so on.
-     */
-    void nextInputable();
-    /**
-     * Move the current position to the previous inputable element. Text input, text area, select and so on.
-     */
-    void previousInputable();
-    
-    /**
-     * Move the current position to the next link element.
-     */
-    void nextLink();
-    /**
-     * Move the current position to the previous link element.
-     */
-    void previousLink();
-
-    /**
-     * Move the current position to the next object element. Flash, Media Player, and so on.
-     */
-    void nextObject();
-    /**
-     * Move the current position to the previous object element. Flash, Media Player, and so on.
-     */
-    void previousObject();
-
-    /**
-     * Move the current position to the node of the left cell, if the current position is table cell. 
-     */
-    void cellLeft();
-    /**
-     * Move the current position to the node of the right cell, if the current position is table cell. 
-     */
-    void cellRight();
-    /**
-     * Move the current position to the node of the upper cell, if the current position is table cell. 
-     */
-    void cellUp();
-    /**
-     * Move the current position to the node of the lower cell, if the current position is table cell. 
-     */
-    void cellDown();
-
-    // Browser control
-    /**
-     * Refresh page of the current tab of the browser.
-     */
-    void navigateRefresh();
-    // void goForward();
-    // void goBackward();
-
-    // select Fennec;
-    /**
-     * Change the metadata to the next one.
-     * metadata1 -> metadata2 -> ... -> none -> matadata1 -> ...
-     */
-    void selectNextFennec();
-
-    // Form Mode;
-    /**
-     * The mode of application is changed from form mode to tree navigation mode.
-     */
-    void exitFormMode();
-    /**
-     * Do submit of the current form element.
-     */
-    void submitForm();
-
-    // browser address.
-    /**
-     * The keyboard focus is moved into the address bar of the application. 
-     */
-    void enterBrowserAddress();
-
-    // tab operations.
-    /**
-     * Close the current focused tab.
-     */
-    void closeTab();
-
-    /**
-     * Open the search dialog to search text in the browser.
-     * The option of the direction is set to forward.
-     */
-    void searchNext();
-    /**
-     * Open the search dialog to search text in the browser.
-     * The option of the direction is set to backward.
-     */
-    void searchPrevious();
-    
-    /**
-     * Move the current position to the next heading level 1 element. H1.
-     */
-    void nextHeader1();
-    /**
-     * Move the current position to the previous heading level 1 element. H1.
-     */
-    void previousHeader1();
-    /**
-     * Move the current position to the next heading level 2 element. H2.
-     */
-    void nextHeader2();
-    /**
-     * Move the current position to the previous heading level 2 element. H2.
-     */
-    void previousHeader2();
-    /**
-     * Move the current position to the next heading level 3 element. H3.
-     */
-    void nextHeader3();
-    /**
-     * Move the current position to the previous heading level 3 element. H3.
-     */
-    void previousHeader3();
-    /**
-     * Move the current position to the next heading level 4 element. H4.
-     */
-    void nextHeader4();
-    /**
-     * Move the current position to the previous heading level 4 element. H4.
-     */
-    void previousHeader4();
-    /**
-     * Move the current position to the next heading level 5 element. H5.
-     */
-    void nextHeader5();
-    /**
-     * Move the current position to the previous heading level 5 element. H5.
-     */
-    void previousHeader5();
-    /**
-     * Move the current position to the next heading level 6 element. H6.
-     */
-    void nextHeader6();
-    /**
-     * Move the current position to the previous heading level 6 element. H6.
-     */
-    void previousHeader6();
-    
-    /**
-     * Move the current position to the next list item.
-     */
-    void nextListItem();
-    /**
-     * Move the current position to the previous list item.
-     */
-    void previousListItem();
-    /**
-     * Move the current position to the next block.
-     * The block is defined by heuristic, it might be a proper size of information block.
-     */
-    void nextBlock();
-    /**
-     * Move the current position to the previous block.
-	 * @see #nextBlock();
-     */
-    void previousBlock();
-
-    /**
-     * Move the current position to the next media object. Flash, Video player, and so on.
-     */
-    void nextMedia();
-    /**
-     * Move the current position to the previous media object. Flash, Video player, and so on.
-     */
-    void previousMedia();
-    
-    /**
-     * Open the system default browser with the URL which is opened in the current focused browser.
-     */
-    void launchBrowser();
-    /**
-     * Toggle show/hide the views that are the left part of the application.
-     */
-    void toggleLeftViewsShowing();
-    /**
-     * Start the continuous speaking from the current position.
-     * The speaking can be stopped by using {@link #stopSpeak()}.
-     */
-    void speakAll();
-    
-    /**
-     * Open the file dialog to export the all metadata entry.
-     */
-    void exportMetadata();
-    
-    /**
-     * Move the current position to the node which has specified access key.
-     * @param key The key code of the access key.
-     */ 
-    void jumpToAccessKey(char key);
-    /**
-     * Open the dialog which shows the list of the access key in the page.
-     */
-    void showAccessKeyList();
-    
-    // force start.
-    /**
-     * Do restart the analyze of the page.
-     * It is used when the analyze is failed because of the timing or something.
-     */
-    void forceRestart();
-    /**
-     * Toggle enable/disable the audio description function.
-     */
-    void toggleDescriptionEnable();
-    /**
-     * Change the focus to the next tab.
-     */
-    void nextTab();
-    /**
-     * Change the focus to the previous tab.
-     */
-    void prevTab();
-
-    // User Annotation Extension.
-    /**
-     * Move the current position to the next "alterable" element.
-     * "Alterable" means that the text of the element can be replaced by the application.
-     * For example, image alternative text.
-     */
-    void nextAlterable();
-    /**
-     * Move the current position to the previous "alterable" element.
-	 * @see #nextAlterable();
-     */
-    void previousAlterable();
-    /**
-     * Open the dialog to edit the alternative text.
-     */
-    void editAltText();
-    /**
-     * Make a landmark for the current position.  
-     * If there is a landmark on the element of the current position, then the landmark will be removed.
-     */
-    void makeLandmark();
-    /**
-     * Save the information about the alternative text and the landmark (user annotation) into the file. 
-     */
-    void saveUserInfo();
-    /**
-     * Remove the user annotation which is provided for the current page.
-     */
-    void removeUserInfo();
-    
-    // repair
-    /**
-     * Do repair Flash content in the current page. This is a prototype function.
-     */
-    void repairFlash();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java
deleted file mode 100644
index 42f5007..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-
-
-/**
- * IScreenReaderControl interface defines methods to be implemented by the 
- * screen reader which conflicts with the application.
- * This interface provides functions to manage the screen reader behavior.
- */
-public interface IScreenReaderControl {
-    /**
-     * @return Whether the screen reader is available or not.
-     */
-    boolean isAvailable();
-
-    /**
-     * The screen reader should be activated.
-     */
-    void screenReaderOn();
-    
-    /**
-     * The screen reader should be deactivated, because the voice output from the application 
-     * conflicts with the screen reader voice output.
-     */
-    void screenReaderOff();
-    
-    /**
-     * This is a special method to get control of application from the screen reader.
-     */
-    void takeBackControl();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java
deleted file mode 100644
index 7061512..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.actions;
-
-import org.eclipse.actf.ai.navigator.extension.MetadataCacheCleanerExtension;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-
-public class DeleteCacheAction implements IWorkbenchWindowActionDelegate {
-    
-	//private IWorkbenchWindow window;
-
-    public void init(IWorkbenchWindow window) {
-        //this.window = window;
-    }
-
-    public void dispose() {
-        
-    }
-
-    public void run(IAction action) {
-        MetadataCacheCleanerExtension.clearCache();
-    }
-
-    public void selectionChanged(IAction action, ISelection selection) {
-        
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java
deleted file mode 100644
index fde9f29..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.broker;
-
-
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class Mirror {
-    final private Class class1;
-    final private Object object;
-
-    public Object getObject() {
-        return object;
-    }
-
-    private Class[] parseMethodSignature(String params) {
-        String[] paramArray;
-
-        paramArray = params.split(", *");
-        Class[] cs = new Class[paramArray.length];
-        try {
-            for (int i = 0; i < paramArray.length; i++) {
-                if ("int".equals(paramArray[i])) {
-                    cs[i] = java.lang.Integer.TYPE;
-                } else if ("short".equals(paramArray[i])) {
-                    cs[i] = java.lang.Short.TYPE;
-                } else if ("long".equals(paramArray[i])) {
-                    cs[i] = java.lang.Long.TYPE;
-                } else if ("char".equals(paramArray[i])) {
-                    cs[i] = java.lang.Character.TYPE;
-                } else if ("boolean".equals(paramArray[i])) {
-                    cs[i] = java.lang.Boolean.TYPE;
-                } else if ("byte".equals(paramArray[i])) {
-                    cs[i] = java.lang.Byte.TYPE;
-                } else if ("float".equals(paramArray[i])) {
-                    cs[i] = java.lang.Float.TYPE;
-                } else if ("double".equals(paramArray[i])) {
-                    cs[i] = java.lang.Double.TYPE;
-                } else {
-                    cs[i] = Class.forName(paramArray[i], true, class1.getClassLoader());
-                }
-            }
-        } catch (ClassNotFoundException e) {
-            return null;
-        }
-
-        return cs;
-    }
-
-    public Method getMethod(String signature) {
-        String name;
-        Class[] params = null;
-        int posParam = signature.indexOf('(');
-        if (posParam == -1) {
-            name = signature;
-        } else {
-            name = signature.substring(0, posParam);
-            int posParamEnd = signature.lastIndexOf(')');
-            if (posParamEnd == -1) return null;
-            params = parseMethodSignature(signature.substring(posParam + 1, posParamEnd));
-            if (params == null) return null;
-        }
-
-        Method m = null;
-        for (Class c = class1; c != null; c = c.getSuperclass()) {
-            try {
-                if (params == null) {
-                    Method[] ms = c.getDeclaredMethods();
-                    for (int i = 0; i < ms.length; i++) {
-                        if (name.equals(ms[i].getName())) {
-                            m = ms[i];
-                        }
-                    }
-                } else {
-                    m = c.getDeclaredMethod(name, params);
-                }
-            } catch (SecurityException e) {
-                continue;
-            } catch (NoSuchMethodException e) {
-                continue;
-            }
-            if (m != null) {
-                m.setAccessible(true);
-                return m;
-            }
-        }
-
-        return null;
-    }
-
-    public Object invoke(String signature, Object[] params) throws Exception {
-        Method m = getMethod(signature);
-        return m.invoke(object, params);
-    }
-
-    public Field getField(String name) {
-        Field f;
-
-        for (Class c = class1; c != null; c = c.getSuperclass()) {
-            try {
-                f = c.getDeclaredField(name);
-            } catch (SecurityException e) {
-                continue;
-            } catch (NoSuchFieldException e) {
-                continue;
-            }
-            if (f != null) {
-                f.setAccessible(true);
-                return f;
-            }
-        }
-        return null;
-    }
-
-    public Object getFieldObject(String name) throws IllegalAccessException {
-        return getField(name).get(object);
-    }
-
-    static private boolean isParamAccept(Class cp, Class c) {
-        if (cp.isAssignableFrom(c)) return true;
-
-        if ((java.lang.Integer.TYPE == cp)
-            && java.lang.Integer.class.equals(c))
-            return true;
-        if ((java.lang.Short.TYPE == cp)
-            && java.lang.Short.class.equals(c))
-            return true;
-        if ((java.lang.Long.TYPE == cp)
-            && java.lang.Long.class.equals(c))
-            return true;
-        if ((java.lang.Character.TYPE == cp)
-            && java.lang.Character.class.equals(c))
-            return true;
-        if ((java.lang.Boolean.TYPE == cp)
-            && java.lang.Boolean.class.equals(c))
-            return true;
-        if ((java.lang.Byte.TYPE == cp)
-            && java.lang.Byte.class.equals(c))
-            return true;
-        if ((java.lang.Float.TYPE == cp)
-            && java.lang.Float.class.equals(c))
-        if ((java.lang.Double.TYPE == cp)
-            && java.lang.Double.class.equals(c))
-            return true;
-
-        return false;
-    }
-
-    @SuppressWarnings("unchecked")
-	public Constructor findConstructor(Object[] params) {
-        Constructor[] cs = class1.getDeclaredConstructors();
-
-        nextConstructor:
-        for (int i = 0; i < cs.length; i++) {
-            Class[] cParams = cs[i].getParameterTypes();
-            if (params == null) {
-                if (cParams.length == 0) return cs[i];
-                continue nextConstructor;
-            }
-            if (cParams.length != params.length) continue nextConstructor;;
-            for (int j = 0; j < params.length; j++) {
-                if (!isParamAccept(cParams[j], params[j].getClass())) continue nextConstructor;
-            }
-            return cs[i];
-        }
-
-        return null;
-    }
-
-    public Object newInstance(Object[] params)
-    	throws InvocationTargetException, IllegalAccessException, InstantiationException {
-        return findConstructor(params).newInstance(params);
-    }
-
-    public Mirror(String className) throws ClassNotFoundException {
-        this.class1 = Class.forName(className);
-        this.object = null;
-    }
-
-    public Mirror(Class cls) {
-        this.class1 = cls;
-        this.object = null;
-    }
-
-    public Mirror(Object object) {
-        this.class1 = object.getClass();
-        this.object = object;
-    }
-
-    public Mirror(String className, Object[] params)
-    	throws ClassNotFoundException,
-               InvocationTargetException, IllegalAccessException, InstantiationException {
-        this.class1 = Class.forName(className);
-        this.object = newInstance(params);
-    }
-
-    public static void main(String[] args) throws Exception {
-        Mirror miS = new Mirror("java.lang.String");
-
-        System.out.println("java.lang.String.charAt:"
-                           + miS.getMethod("charAt"));
-        System.out.println("java.lang.String.indexOf(int,int):"
-                           + miS.getMethod("indexOf(int, int)"));
-
-        Mirror miS2 = new Mirror("java.lang.String", new Object[]{"test string"});
-        System.out.println("String instanciation test:" + miS2.getObject());
-
-        Mirror miI = new Mirror("java.lang.Integer", new Object[]{new Integer(100)});
-        System.out.println("Integer instanciation test:" + miI.getObject());
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java
deleted file mode 100644
index 4d50d1f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.broker;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.navigator.impl.NavigatorImpl;
-import org.eclipse.actf.ai.navigator.impl.WebEventListener;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.ui.util.timer.Yield;
-
-
-public class RequestBroker {
-    public static final int SHOW_STATUS = 100;
-	
-    public static final int EVENT_NEW_URL = 101;
-
-    public static final int EVENT_NEWPAGE_READY = 1000;
-	
-    public static final int EVENT_LOAD_STARTING = 1001;
-	
-    public static final int EVENT_WAIT_FOR_PROCESSING = 1200;
-	
-    public static final int EVENT_INFORMATION_UPDATED = 1201;
-
-    public static final int EVENT_TREE_MODIFIED = 1202;
-
-    public static final int EVENT_NOTIFICATION = 1203;
-	
-    public static final int EVENT_ALERT_MODAL = 1204;
-	
-    public static final int EVENT_AUTOMATIC_TRANSITION = 1205;
-	
-    private final WebEventListener webEventListener;
-    private NavigatorImpl navigator;
-    private IWebBrowserACTF webBrowser;
-
-    private boolean enabled;
-
-    private Method registerRequestBrokerMethod;
-    private Method sendEventMethod;
-
-    public void setNavigator(NavigatorImpl navigator, IWebBrowserACTF webBrowser) {
-        this.navigator = navigator;
-        this.webBrowser = webBrowser;
-    }
-
-    private void registerProxy() {
-        if (!enabled) return;
-        try {
-            Object o = Thread.currentThread();
-            registerRequestBrokerMethod.invoke(o, new Object[] { this });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void sendEvent(int id, Object param) {
-        if (!enabled) return;
-        System.err.println("EventRP:" + id + " Param:" + param);
-        try {
-            Object o = Thread.currentThread();
-            sendEventMethod.invoke(o, new Object[] { new Integer(id), param });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void newPageReady() {
-        sendEvent(EVENT_NEW_URL, webBrowser.getURL());
-        sendEvent(EVENT_NEWPAGE_READY, null);
-    }
-
-    public Object invokeNavigator(String signature, Object[] args) throws Exception {
-        Mirror m = new Mirror(navigator);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, navigator, args);
-    }
-
-    public Object invokeTreeManager(String signature, Object[] args) throws Exception {
-        ITreeManager treeManager = navigator.getTreeManager();
-        Mirror m = new Mirror(treeManager);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, treeManager, args);
-    }
-
-    public Object invokeITreeItem(Object item, String signature, Object[] args) throws Exception {
-        Mirror m = new Mirror(item);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, item, args);
-    }
-
-    private void initialize() {
-        Object o = Thread.currentThread();
-        Class c = o.getClass();
-        try {
-            registerRequestBrokerMethod = c.getMethod("registerRequestBroker", new Class[] { Object.class });
-            sendEventMethod = c.getMethod("sendEvent", new Class[] { java.lang.Integer.TYPE, Object.class });
-            enabled = true;
-        } catch (NoSuchMethodException e) {
-            enabled = false;
-        }
-    }
-
-    public RequestBroker(WebEventListener webEventListener) {
-    	this.webEventListener = webEventListener;
-        initialize();
-        registerProxy();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java
deleted file mode 100644
index a345671..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IBrowserControl;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.INavigatorUI;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class ManipulatorExtension {
-    private static final String TAG_MANIPULATOR = "manipulator";
-    private static final String ATTR_CLASS = "class";
-
-    private static ManipulatorExtension[] cachedExtensions;
-
-    public static ManipulatorExtension[] getExtensions() {
-        if (cachedExtensions != null) return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry()
-            .getExtensionPoint(NavigatorPlugin.ID, "Navigation")
-            .getExtensions();
-        List<ManipulatorExtension> l = new ArrayList<ManipulatorExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements =
-                extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                ManipulatorExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null) l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new ManipulatorExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static ManipulatorExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_MANIPULATOR))
-            return null;
-        try {
-            return new ManipulatorExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null) return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-
-    public static void setBrowserControl(IBrowserControl browserControl) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setBrowserControl(browserControl);
-        }
-    }
-
-    public static void setNavigator(INavigatorUI navigatorUI) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setNavigator(navigatorUI);
-        }
-    }
-
-    public static void setMode(IManipulator.Mode mode) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setMode(mode);
-        }
-    }
-
-    private final IConfigurationElement configElement;
-    private IManipulator manipulator;
-
-    private ManipulatorExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IManipulator getManipulator() {
-        if (manipulator != null) return manipulator;
-        try {
-            manipulator = (IManipulator) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return manipulator;
-    }
-
-    private void dispose() {
-        if (manipulator == null) return;
-        manipulator.dispose();
-        manipulator = null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java
deleted file mode 100644
index be41408..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class MediaControlExtension {
-    private static final String TAG_CONTROLLER = "controller";
-
-    private static final String ATTR_CLASS = "class";
-
-    private static MediaControlExtension[] cachedExtensions;
-
-    public static MediaControlExtension[] getExtensions() {
-        if (cachedExtensions != null)
-            return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(NavigatorPlugin.ID, "MediaControl")
-                .getExtensions();
-        List<MediaControlExtension> l = new ArrayList<MediaControlExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                MediaControlExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null)
-                    l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new MediaControlExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static MediaControlExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_CONTROLLER))
-            return null;
-        try {
-            return new MediaControlExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null)
-            return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-
-    public static void start(IMediaControl.IHandle handle) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().start(handle);
-        }
-    }
-
-    public static void doDispose(IMediaControl.IHandle handle) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().dispose(handle);
-        }
-    }
-
-    private final IConfigurationElement configElement;
-
-    private IMediaControl controller;
-
-    private MediaControlExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IMediaControl getMediaControl() {
-        if (controller != null)
-            return controller;
-        try {
-            controller = (IMediaControl) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return controller;
-    }
-
-    private void dispose() {
-        if (controller == null)
-            return;
-        controller = null;
-    }
-
-    public static int toggleEnable() {
-        MediaControlExtension[] exs = getExtensions();
-        int result = 0;
-        if (exs == null)
-            return IMediaControl.TOGGLE_FAIL;
-        for (int i = 0; i < exs.length; i++) {
-            result |= exs[i].getMediaControl().toggleEnabled();
-        }
-        return result;
-    }
-    
-    public static boolean isAvailable(){
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return false;
-        
-        boolean ret = false;
-        for (int i = 0; i < exs.length; i++) {
-            ret |= exs[i].getMediaControl().isAvailable();
-        }
-        return ret;
-    }
-
-    public static boolean toggleViewShowing() {
-        MediaControlExtension[] exs = getExtensions();
-        boolean result = true;
-        for (int i = 0; i < exs.length; i++) {
-            result = exs[i].getMediaControl().toggleViewShowing() && result;
-        }
-        return result;
-    }
-
-    public static boolean isEnabled() {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return false;
-        
-        boolean ret = false;
-        for (int i = 0; i < exs.length; i++) {
-            ret |= exs[i].getMediaControl().isEnabled();
-        }
-        return ret;
-    }
-
-    public static void speakInfo(boolean flush) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().speakInfo(flush);
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java
deleted file mode 100644
index 8102317..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IMetadataCacheCleaner;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class MetadataCacheCleanerExtension {
-    private static final String TAG_CLEANER = "cleaner";
-    private static final String ATTR_CLASS = "class";
-
-    private static MetadataCacheCleanerExtension[] cachedExtensions;
-
-    public static MetadataCacheCleanerExtension[] getExtensions() {
-        if (cachedExtensions != null) return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry()
-            .getExtensionPoint(NavigatorPlugin.ID, "MetadataCacheCleaner")
-            .getExtensions();
-        List<MetadataCacheCleanerExtension> l = new ArrayList<Metadata