diff --git a/browser/src/main/java/org/netbeans/html/presenters/browser/Browser.java b/browser/src/main/java/org/netbeans/html/presenters/browser/Browser.java
index 748625c..9b80d32 100644
--- a/browser/src/main/java/org/netbeans/html/presenters/browser/Browser.java
+++ b/browser/src/main/java/org/netbeans/html/presenters/browser/Browser.java
@@ -100,9 +100,8 @@
      * If the property is not specified the system tries <b>GTK</b> mode first,
      * followed by <b>AWT</b> and then tries to execute <code>xdg-open</code>
      * (default LINUX command to launch a browser from a shell script).
-     * @throws Exception
      */
-    public Browser() throws Exception {
+    public Browser() {
         this(new Config());
     }
 
diff --git a/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java b/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java
index 14d5d7b..369c418 100644
--- a/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java
+++ b/json-tck/src/main/java/org/netbeans/html/json/tck/KnockoutTCK.java
@@ -93,7 +93,14 @@
         return prepareURL(content, mimeType, parameters).toString();
     }
 
-    /**
+    /** Creates a URL which later returns content with given
+     * <code>mimeType</code> and <code>content</code>. The
+     * content may be processed by the provided <code>parameters</code>.
+     *
+     * @param content content to be available
+     * @param mimeType mime type of the content
+     * @param parameters any parameters to process the content with
+     * @return URI to reference the content
      * @deprecated provide {@link #prepareWebResource(java.lang.String, java.lang.String, java.lang.String[])}
      *    implementation instead since post 1.4 version of HTML/Java API.
      */
diff --git a/json/src/main/java/net/java/html/json/Model.java b/json/src/main/java/net/java/html/json/Model.java
index d6d3fd7..72dc3bf 100644
--- a/json/src/main/java/net/java/html/json/Model.java
+++ b/json/src/main/java/net/java/html/json/Model.java
@@ -110,9 +110,12 @@
  *   Lives in &lt;span data-bind="text: town"/&gt;
  * &lt;/div&gt;
  * </pre>
- * 
- * <h3>Access Raw <a target="_blank" href="http://knockoutjs.com/">Knockout</a> Observables</h3>
- * 
+ *
+ * <p>
+ * <b>Access Raw <a target="_blank" href="http://knockoutjs.com/">Knockout</a> Observables</b>
+ * </p>
+ *
+ * <p>
  * One can obtain <em>raw</em> JavaScript object representing the 
  * instance of {@link Model model class} (with appropriate
  * <a target="_blank" href="http://knockoutjs.com/">Knockout</a> <b>observable</b> properties)
@@ -120,6 +123,7 @@
  * example here is a way to obtain the value of <code>fullName</code> property
  * (inefficient as it switches between Java and JavaScript back and forth, 
  * but functional and instructive) via a JavaScript call:
+ * </p>
  * <pre>
  * {@link net.java.html.js.JavaScriptBody @JavaScriptBody}(args = "raw", javacall = true, body =
  *   "return raw.fullName();" // yes, the <a target="_blank" href="http://knockoutjs.com/">Knockout</a> property is a function
@@ -129,6 +133,7 @@
  * Person p = ...;
  * String fullName = jsFullName({@link Models#toRaw(java.lang.Object) Models.toRaw(p)});
  * </pre>
+ * <p>
  * The above shows how to read a value from <a target="_blank" href="http://knockoutjs.com/">Knockout</a>
  * observable. There is a way to change the value too:
  * One can pass a parameter to the property-function and then
@@ -137,13 +142,19 @@
  * available). Everything mentioned in this paragraph applies only when 
  * <a target="_blank" href="http://knockoutjs.com/">Knockout</a> technology is active
  * other technologies may behave differently.
- * 
- * <h4>Copy to Plain JSON</h4>
+ * </p>
+ *
+ * <p>
+ * <b>Copy to Plain JSON</b>
+ * </p>
+ *
+ * <p>
  * There is a way to pass a value of a Java {@link Model model class} instance 
  * by copy and convert 
  * the {@link Model the whole object} into plain 
  * <a target="_blank" href="http://en.wikipedia.org/wiki/JSON">JSON</a>. Just
  * print it as a string and parse it in JavaScript:
+ * </p>
  * <pre>
  * {@link net.java.html.js.JavaScriptBody @JavaScriptBody}(args = { "txt" }, body =
  *   "return JSON.parse(txt);"
@@ -154,13 +165,17 @@
  *   return parseJSON(model.toString());
  * }
  * </pre>
+ * <p>
  * The newly returned instance is a one time copy of the original model and is no longer
  * connected to it. The copy based behavior is independent on any 
  * particular technology and should work
  * in <a target="_blank" href="http://knockoutjs.com/">Knockout</a> as well as other
  * technology implementations.
+ * </p>
  * 
- * <h4>References</h4>
+ * <p>
+ * <b>References</b>
+ * </p>
  * 
  * Visit an <a target="_blank" href="http://dew.apidesign.org/dew/#7510833">on-line demo</a>
  * to see a histogram driven by the {@link Model} annotation or try 
diff --git a/pom.xml b/pom.xml
index d614ba4..9e55ace 100644
--- a/pom.xml
+++ b/pom.xml
@@ -151,7 +151,7 @@
                 <docletArtifact>
                     <groupId>org.apidesign.javadoc</groupId>
                     <artifactId>codesnippet-doclet</artifactId>
-                    <version>0.31</version>
+                    <version>0.54</version>
                 </docletArtifact>
                 <additionalOptions>
                     -snippetpath boot-fx/src/test 
@@ -161,9 +161,7 @@
                     ${javadoc.allowjs}
                     -hiddingannotation java.lang.Deprecated
                 </additionalOptions>
-                <!--
                 <failOnWarnings>true</failOnWarnings>
-                -->
                 <failOnError>true</failOnError>
               </configuration>
             </plugin>
