diff --git a/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java b/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java
index 54c6c52..7ba966a 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/search/HelpIndexBuilder.java
@@ -68,10 +68,12 @@
  * If the index is created for a fragment, the manifest must point at the
  * referenced fragment plug-in, while the destination should be the fragment
  * itself.
+ * </p>
  * <p>
  * Starting from the provided destination directory, index for each locale will
  * be placed in a directory with the following path:
- * <p>
+ * </p>
+ *
  * <pre>
  *                  destination/nl/country/
  *
@@ -83,9 +85,9 @@
  * The relative directory specified in the <code>index</code> element of the
  * <code>org.eclipse.help.toc</code> extention will be created in each of the
  * locale-specific paths (one per locale).
- * <p>
- * An instance of <code>HelpIndexBuilder</code> can be cached and used
- * multiple times for different manifest and destination values.
+ * </p>
+ * An instance of <code>HelpIndexBuilder</code> can be cached and used multiple
+ * times for different manifest and destination values.
  *
  * @since 3.1
  */
@@ -769,7 +771,7 @@
 				IStatus.OK, message, t);
 		throw new CoreException(status);
 	}
-	
+
 	private File[] listFiles(File file) throws CoreException {
 		File[] fileList = file.listFiles();
 		if(fileList == null) {
diff --git a/org.eclipse.help.base/src/org/eclipse/help/standalone/Help.java b/org.eclipse.help.base/src/org/eclipse/help/standalone/Help.java
index 0e8acbf..5c035c6 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/standalone/Help.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/standalone/Help.java
@@ -148,9 +148,11 @@
 	 * Controls standalone help system from command line.
 	 *
 	 * @param args
-	 *            array of String containing options Options are:
+	 *            array of String containing options. <br>
+	 *            Options are:
 	 *            <code>-command start | shutdown | (displayHelp [href]) [-eclipsehome eclipseInstallPath] [-host helpServerHost] [-port helpServerPort] [-dir rtl] [platform options] [-vmargs JavaVMarguments]</code>
-	 *            where
+	 *            <br>
+	 *            where:
 	 *            <ul>
 	 *            <li><code>href</code> is the URL of the help resource to
 	 *            display,</li>
@@ -166,9 +168,9 @@
 	 *            application server plugin preferences.</li>
 	 *            <li><code>-dir rtl</code> sets right-to-left rendering
 	 *            direction of help UI in the browser.
-	 *            <li><code>platform options</code> are other options that
-	 *            are supported by Eclipse Executable.</li>
-	 *            <ul>
+	 *            <li><code>platform options</code> are other options that are
+	 *            supported by Eclipse Executable.</li>
+	 *            </ul>
 	 */
 	public static void main(String[] args) {
 		StandaloneHelp.main(args);
diff --git a/org.eclipse.help.base/src/org/eclipse/help/standalone/Infocenter.java b/org.eclipse.help.base/src/org/eclipse/help/standalone/Infocenter.java
index 5666b08..31b01aa 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/standalone/Infocenter.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/standalone/Infocenter.java
@@ -73,13 +73,16 @@
 	public void shutdown() throws Exception {
 		infocenter.shutdown();
 	}
+
 	/**
 	 * Controls start up and shut down of infocenter from command line.
 	 *
 	 * @param args
-	 *            array of String containing options Options are:
+	 *            array of String containing options.<br>
+	 *            Options are:<br>
 	 *            <code>-command start | shutdown [-eclipsehome eclipseInstallPath] [-host helpServerHost] [-port helpServerPort] [-dir rtl] [-noexec] [platform options] [-vmargs JavaVMarguments]</code>
-	 *            where
+	 *            <br>
+	 *            where:
 	 *            <ul>
 	 *            <li><code>eclipseInstallPath</code> specifies Eclipse
 	 *            installation directory; it must be provided, when current
@@ -95,9 +98,9 @@
 	 *            direction of help UI in the browser.
 	 *            <li><code>-noexec</code> option indicates that Eclipse
 	 *            executable should not be used.</li>
-	 *            <li><code>platform options</code> are other options that
-	 *            are supported by Eclipse Executable.</li>
-	 *            <ul>
+	 *            <li><code>platform options</code> are other options that are
+	 *            supported by Eclipse Executable.</li>
+	 *            </ul>
 	 */
 	public static void main(String[] args) {
 		StandaloneInfocenter.main(args);
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/browser/LaunchURL.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/browser/LaunchURL.java
index 34be32b..7bc2a5b 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/browser/LaunchURL.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/browser/LaunchURL.java
@@ -33,22 +33,25 @@
  * <p>
  * This class is intended to be specified as a value of a class attribute of an
  * action element in plugin.xml for extensions of org.eclipse.ui.actionSets
- * extension point.  The URL to launch must be specified in the markup in one
- * of two ways.
+ * extension point. The URL to launch must be specified in the markup in one of
+ * two ways.
  * </p>
- * </p>
+ * <p>
  * The action element can have an attribute named url, in addition to markup
  * required by org.eclipse.ui.actionSets extension point specification. The
  * value of the url attribute should specify a URL to be opened in a browser.
  * </p>
- * </p>
+ * <p>
  * Alternatively, since 3.1, instead of a class attribute on the action element,
- * the extension can specify a nested class element with a class attribute
- * and URL specified in a parameter sub-element.  For example:
- * <pre>         &lt;class class="org.eclipse.help.ui.browser.LaunchURL"&gt;
- *              &lt;parameter name="url" value="http://eclipse.org/" /&gt;
- *          &lt;/class&gt;</pre>
+ * the extension can specify a nested class element with a class attribute and
+ * URL specified in a parameter sub-element. For example:
  * </p>
+ * 
+ * <pre>
+ *          &lt;class class="org.eclipse.help.ui.browser.LaunchURL"&gt;
+ *              &lt;parameter name="url" value="http://eclipse.org/" /&gt;
+ *          &lt;/class&gt;
+ * </pre>
  */
 public class LaunchURL implements IWorkbenchWindowActionDelegate,
 		IExecutableExtension {
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/intro/config/IStandbyContentPart.java b/org.eclipse.ui.intro/src/org/eclipse/ui/intro/config/IStandbyContentPart.java
index c994c16..df70184 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/intro/config/IStandbyContentPart.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/intro/config/IStandbyContentPart.java
@@ -24,7 +24,6 @@
  * An Intro standby part. It is a UI component that represents some standby
  * content. Standby parts can be contributed to the Eclipse intro using the
  * following extension point:
- * <p>
  * <pre>
  *         &lt;extension point=&quot;org.eclipse.ui.intro.configExtension&quot;&gt;
  *        	&lt;standbyPart
@@ -35,7 +34,6 @@
  *         &lt;/extension&gt;
  * </pre>
  *
- * </p>
  * Standby content parts have a life cycle that starts with a call to init,
  * shortly after part construction, followed by a call to createPartControl.
  * During these two calls, the part is responsible for creating its content and
