diff --git a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/SingleThreadedStepController.java b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/SingleThreadedStepController.java
index a9b708a..62b3127 100755
--- a/jbatch/src/main/java/org/apache/batchee/container/impl/controller/SingleThreadedStepController.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/impl/controller/SingleThreadedStepController.java
@@ -40,7 +40,7 @@
 /**
  * When a partitioned step is run, this controller will only be used for the partition threads,
  * NOT the top-level main thread that the step executes upon.
- * <p/>
+ * <p>
  * When a non-partitioned step is run this controller will be used as well (and there will be no
  * separate main thread with controller).
  */
@@ -71,7 +71,7 @@
             Collector collector = step.getPartition().getCollector();
             if (collector != null) {
                 List<Property> propList = (collector.getProperties() == null) ? null : collector.getProperties().getPropertyList();
-                /**
+                /*
                  * Inject job flow, split, and step contexts into partition
                  * artifacts like collectors and listeners some of these
                  * contexts may be null
diff --git a/jbatch/src/main/java/org/apache/batchee/container/services/persistence/jpa/provider/EEEntityManagerProvider.java b/jbatch/src/main/java/org/apache/batchee/container/services/persistence/jpa/provider/EEEntityManagerProvider.java
index 399c099..ec81d36 100644
--- a/jbatch/src/main/java/org/apache/batchee/container/services/persistence/jpa/provider/EEEntityManagerProvider.java
+++ b/jbatch/src/main/java/org/apache/batchee/container/services/persistence/jpa/provider/EEEntityManagerProvider.java
@@ -31,13 +31,12 @@
  *
  * Typically:
  *
- *
-   <code>
-   @PersistenceContext
-   @Produces
-   @Named
-   private EntityManager batcheeJpaEm;
-   </code>
+ * <pre><code>
+ * &#64;PersistenceContext
+ * &#64;Produces
+ * &#64;Named
+ * private EntityManager batcheeJpaEm;
+ * </code></pre>
  */
 public class EEEntityManagerProvider implements EntityManagerProvider {
     private EntityManager instance;
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Analyzer.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Analyzer.java
index 7b69d93..d2a902f 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Analyzer.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Analyzer.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for Analyzer complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Analyzer complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Analyzer">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Analyzer"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifactRef.java b/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifactRef.java
index f35e330..7fac74d 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifactRef.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifactRef.java
@@ -15,19 +15,19 @@
 
 
 /**
- * <p>Java class for BatchArtifactRef complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for BatchArtifactRef complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="BatchArtifactRef">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="BatchArtifactRef"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifacts.java b/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifacts.java
index 7750baf..560a899 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifacts.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/BatchArtifacts.java
@@ -16,20 +16,20 @@
 
 
 /**
- * <p>Java class for BatchArtifacts complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for BatchArtifacts complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="BatchArtifacts">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="ref" type="{http://xmlns.jcp.org/xml/ns/javaee}BatchArtifactRef" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="BatchArtifacts"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="ref" type="{http://xmlns.jcp.org/xml/ns/javaee}BatchArtifactRef" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -42,21 +42,17 @@
 
     /**
      * Gets the value of the ref property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the ref property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the ref property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getRef().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link BatchArtifactRef }
      */
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Batchlet.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Batchlet.java
index 406cb64..45b2c83 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Batchlet.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Batchlet.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for Batchlet complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Batchlet complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Batchlet">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Batchlet"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/CheckpointAlgorithm.java b/jbatch/src/main/java/org/apache/batchee/jaxb/CheckpointAlgorithm.java
index 97716b2..f931eb4 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/CheckpointAlgorithm.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/CheckpointAlgorithm.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for CheckpointAlgorithm complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for CheckpointAlgorithm complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="CheckpointAlgorithm">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="CheckpointAlgorithm"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Chunk.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Chunk.java
index 8f432d5..a47a503 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Chunk.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Chunk.java
@@ -16,31 +16,31 @@
 
 
 /**
- * <p>Java class for Chunk complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Chunk complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Chunk">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="reader" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemReader"/>
- *         &lt;element name="processor" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemProcessor" minOccurs="0"/>
- *         &lt;element name="writer" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemWriter"/>
- *         &lt;element name="checkpoint-algorithm" type="{http://xmlns.jcp.org/xml/ns/javaee}CheckpointAlgorithm" minOccurs="0"/>
- *         &lt;element name="skippable-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/>
- *         &lt;element name="retryable-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/>
- *         &lt;element name="no-rollback-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="checkpoint-policy" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="item-count" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="time-limit" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="skip-limit" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="retry-limit" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Chunk"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="reader" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemReader"/&gt;
+ *         &lt;element name="processor" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemProcessor" minOccurs="0"/&gt;
+ *         &lt;element name="writer" type="{http://xmlns.jcp.org/xml/ns/javaee}ItemWriter"/&gt;
+ *         &lt;element name="checkpoint-algorithm" type="{http://xmlns.jcp.org/xml/ns/javaee}CheckpointAlgorithm" minOccurs="0"/&gt;
+ *         &lt;element name="skippable-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/&gt;
+ *         &lt;element name="retryable-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/&gt;
+ *         &lt;element name="no-rollback-exception-classes" type="{http://xmlns.jcp.org/xml/ns/javaee}ExceptionClassFilter" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="checkpoint-policy" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="item-count" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="time-limit" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="skip-limit" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="retry-limit" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Collector.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Collector.java
index 28921a9..680ef00 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Collector.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Collector.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for Collector complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Collector complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Collector">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Collector"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Decision.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Decision.java
index 7fff2f2..1c662e5 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Decision.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Decision.java
@@ -26,23 +26,23 @@
 
 
 /**
- * <p>Java class for Decision complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Decision complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Decision">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Decision"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -90,21 +90,17 @@
 
     /**
      * Gets the value of the transitionElements property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the transitionElements property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the transitionElements property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getTransitionElements().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Next }
      * {@link Stop }
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/End.java b/jbatch/src/main/java/org/apache/batchee/jaxb/End.java
index ff3f7dc..7148264 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/End.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/End.java
@@ -17,18 +17,18 @@
 
 
 /**
- * <p>Java class for End complex type.
- * <p/>
+ * Java class for End complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="End">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="End"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/ExceptionClassFilter.java b/jbatch/src/main/java/org/apache/batchee/jaxb/ExceptionClassFilter.java
index b8fb5a4..fe0c950 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/ExceptionClassFilter.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/ExceptionClassFilter.java
@@ -18,41 +18,41 @@
 
 
 /**
- * <p>Java class for ExceptionClassFilter complex type.
- * <p/>
+ * Java class for ExceptionClassFilter complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="ExceptionClassFilter">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="include" maxOccurs="unbounded" minOccurs="0">
- *           &lt;complexType>
- *             &lt;complexContent>
- *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                 &lt;sequence>
- *                 &lt;/sequence>
- *                 &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *               &lt;/restriction>
- *             &lt;/complexContent>
- *           &lt;/complexType>
- *         &lt;/element>
- *         &lt;element name="exclude" maxOccurs="unbounded" minOccurs="0">
- *           &lt;complexType>
- *             &lt;complexContent>
- *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                 &lt;sequence>
- *                 &lt;/sequence>
- *                 &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *               &lt;/restriction>
- *             &lt;/complexContent>
- *           &lt;/complexType>
- *         &lt;/element>
- *       &lt;/sequence>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="ExceptionClassFilter"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="include" maxOccurs="unbounded" minOccurs="0"&gt;
+ *           &lt;complexType&gt;
+ *             &lt;complexContent&gt;
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *                 &lt;sequence&gt;
+ *                 &lt;/sequence&gt;
+ *                 &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *               &lt;/restriction&gt;
+ *             &lt;/complexContent&gt;
+ *           &lt;/complexType&gt;
+ *         &lt;/element&gt;
+ *         &lt;element name="exclude" maxOccurs="unbounded" minOccurs="0"&gt;
+ *           &lt;complexType&gt;
+ *             &lt;complexContent&gt;
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *                 &lt;sequence&gt;
+ *                 &lt;/sequence&gt;
+ *                 &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *               &lt;/restriction&gt;
+ *             &lt;/complexContent&gt;
+ *           &lt;/complexType&gt;
+ *         &lt;/element&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -69,21 +69,17 @@
 
     /**
      * Gets the value of the includeList property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the includeList property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the includeList property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getIncludeList().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link ExceptionClassFilter.Include }
      */
@@ -96,21 +92,17 @@
 
     /**
      * Gets the value of the excludeList property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the excludeList property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the excludeList property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getExcludeList().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link ExceptionClassFilter.Exclude }
      */
@@ -123,20 +115,20 @@
 
 
     /**
-     * <p>Java class for anonymous complex type.
-     * <p/>
-     * <p>The following schema fragment specifies the expected content contained within this class.
-     * <p/>
+     * Java class for anonymous complex type.
+     * <p>
+     * The following schema fragment specifies the expected content contained within this class.
+     *
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;sequence>
-     *       &lt;/sequence>
-     *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     * &lt;complexType&gt;
+     *   &lt;complexContent&gt;
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+     *       &lt;sequence&gt;
+     *       &lt;/sequence&gt;
+     *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+     *     &lt;/restriction&gt;
+     *   &lt;/complexContent&gt;
+     * &lt;/complexType&gt;
      * </pre>
      */
     @XmlAccessorType(XmlAccessType.FIELD)
@@ -170,20 +162,19 @@
 
 
     /**
-     * <p>Java class for anonymous complex type.
-     * <p/>
-     * <p>The following schema fragment specifies the expected content contained within this class.
-     * <p/>
+     * Java class for anonymous complex type.
+     * <p>
+     * The following schema fragment specifies the expected content contained within this class.
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;sequence>
-     *       &lt;/sequence>
-     *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     * &lt;complexType&gt;
+     *   &lt;complexContent&gt;
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+     *       &lt;sequence&gt;
+     *       &lt;/sequence&gt;
+     *       &lt;attribute name="class" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+     *     &lt;/restriction&gt;
+     *   &lt;/complexContent&gt;
+     * &lt;/complexType&gt;
      * </pre>
      */
     @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Fail.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Fail.java
index 19e5634..5ffbcda 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Fail.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Fail.java
@@ -17,18 +17,18 @@
 
 
 /**
- * <p>Java class for Fail complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Fail complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Fail">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Fail"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Flow.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Flow.java
index 4c00071..3b9cc7c 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Flow.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Flow.java
@@ -26,28 +26,28 @@
 
 
 /**
- * <p>Java class for Flow complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Flow complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Flow">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;choice maxOccurs="unbounded" minOccurs="0">
- *           &lt;element name="decision" type="{http://xmlns.jcp.org/xml/ns/javaee}Decision"/>
- *           &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow"/>
- *           &lt;element name="split" type="{http://xmlns.jcp.org/xml/ns/javaee}Split"/>
- *           &lt;element name="step" type="{http://xmlns.jcp.org/xml/ns/javaee}Step"/>
- *         &lt;/choice>
- *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Flow"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;choice maxOccurs="unbounded" minOccurs="0"&gt;
+ *           &lt;element name="decision" type="{http://xmlns.jcp.org/xml/ns/javaee}Decision"/&gt;
+ *           &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow"/&gt;
+ *           &lt;element name="split" type="{http://xmlns.jcp.org/xml/ns/javaee}Split"/&gt;
+ *           &lt;element name="step" type="{http://xmlns.jcp.org/xml/ns/javaee}Step"/&gt;
+ *         &lt;/choice&gt;
+ *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /&gt;
+ *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -81,21 +81,17 @@
 
     /**
      * Gets the value of the executionElements property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the executionElements property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the executionElements property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getExecutionElements().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Split }
      * {@link Flow }
@@ -111,21 +107,17 @@
 
     /**
      * Gets the value of the transitionElements property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the transitionElements property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the transitionElements property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getTransitionElements().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Stop }
      * {@link Fail }
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemProcessor.java b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemProcessor.java
index 1c6807b..86d1a62 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemProcessor.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemProcessor.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for ItemProcessor complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for ItemProcessor complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="ItemProcessor">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="ItemProcessor"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemReader.java b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemReader.java
index 16b28aa..140a715 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemReader.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemReader.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for ItemReader complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for ItemReader complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="ItemReader">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="ItemReader"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemWriter.java b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemWriter.java
index dfe82b4..98006a9 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/ItemWriter.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/ItemWriter.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for ItemWriter complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for ItemWriter complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="ItemWriter">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="ItemWriter"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/JSLJob.java b/jbatch/src/main/java/org/apache/batchee/jaxb/JSLJob.java
index 151f4d6..e4db57d 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/JSLJob.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/JSLJob.java
@@ -27,32 +27,31 @@
 /**
  * The type of a job definition, whether concrete or
  * abstract. This is the type of the root element of any JSL document.
- * <p/>
- * <p/>
- * <p>Java class for Job complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * <p>
+ * Java class for Job complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ * <p>
  * <pre>
- * &lt;complexType name="Job">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *         &lt;element name="listeners" type="{http://xmlns.jcp.org/xml/ns/javaee}Listeners" minOccurs="0"/>
- *         &lt;choice maxOccurs="unbounded" minOccurs="0">
- *           &lt;element name="decision" type="{http://xmlns.jcp.org/xml/ns/javaee}Decision"/>
- *           &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow"/>
- *           &lt;element name="split" type="{http://xmlns.jcp.org/xml/ns/javaee}Split"/>
- *           &lt;element name="step" type="{http://xmlns.jcp.org/xml/ns/javaee}Step"/>
- *         &lt;/choice>
- *       &lt;/sequence>
- *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}string" fixed="1.0" />
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *       &lt;attribute name="restartable" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Job"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *         &lt;element name="listeners" type="{http://xmlns.jcp.org/xml/ns/javaee}Listeners" minOccurs="0"/&gt;
+ *         &lt;choice maxOccurs="unbounded" minOccurs="0"&gt;
+ *           &lt;element name="decision" type="{http://xmlns.jcp.org/xml/ns/javaee}Decision"/&gt;
+ *           &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow"/&gt;
+ *           &lt;element name="split" type="{http://xmlns.jcp.org/xml/ns/javaee}Split"/&gt;
+ *           &lt;element name="step" type="{http://xmlns.jcp.org/xml/ns/javaee}Step"/&gt;
+ *         &lt;/choice&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}string" fixed="1.0" /&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /&gt;
+ *       &lt;attribute name="restartable" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -124,21 +123,17 @@
 
     /**
      * Gets the value of the executionElements property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the executionElements property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the executionElements property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getExecutionElements().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Flow }
      * {@link Step }
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/JSLProperties.java b/jbatch/src/main/java/org/apache/batchee/jaxb/JSLProperties.java
index 0a0119d..ad0f481 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/JSLProperties.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/JSLProperties.java
@@ -18,21 +18,21 @@
 
 
 /**
- * <p>Java class for Properties complex type.
- * <p/>
+ * Java class for Properties complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="Properties">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="property" type="{http://xmlns.jcp.org/xml/ns/javaee}Property" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="partition" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Properties"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="property" type="{http://xmlns.jcp.org/xml/ns/javaee}Property" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="partition" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -48,21 +48,17 @@
 
     /**
      * Gets the value of the propertyList property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the propertyList property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the propertyList property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getPropertyList().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Property }
      */
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Listener.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Listener.java
index 9c6d2fe..be61b10 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Listener.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Listener.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for Listener complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Listener complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ * <p>
  * <pre>
- * &lt;complexType name="Listener">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Listener"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Listeners.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Listeners.java
index 2b359d4..5ab9427 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Listeners.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Listeners.java
@@ -17,20 +17,20 @@
 
 
 /**
- * <p>Java class for Listeners complex type.
- * <p/>
+ * Java class for Listeners complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="Listeners">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="listener" type="{http://xmlns.jcp.org/xml/ns/javaee}Listener" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Listeners"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="listener" type="{http://xmlns.jcp.org/xml/ns/javaee}Listener" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -44,21 +44,17 @@
 
     /**
      * Gets the value of the listenerList property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the listenerList property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the listenerList property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getListenerList().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Listener }
      */
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Next.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Next.java
index fd53d31..b63d101 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Next.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Next.java
@@ -17,19 +17,19 @@
 
 
 /**
- * <p>Java class for Next complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Next complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Next">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attribute name="on" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="to" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Next"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="on" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="to" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Partition.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Partition.java
index 175e76d..de4d53e 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Partition.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Partition.java
@@ -14,26 +14,26 @@
 
 
 /**
- * <p>Java class for Partition complex type.
- * <p/>
+ * Java class for Partition complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="Partition">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;choice minOccurs="0">
- *           &lt;element name="mapper" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionMapper"/>
- *           &lt;element name="plan" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionPlan"/>
- *         &lt;/choice>
- *         &lt;element name="collector" type="{http://xmlns.jcp.org/xml/ns/javaee}Collector" minOccurs="0"/>
- *         &lt;element name="analyzer" type="{http://xmlns.jcp.org/xml/ns/javaee}Analyzer" minOccurs="0"/>
- *         &lt;element name="reducer" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionReducer" minOccurs="0"/>
- *       &lt;/sequence>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Partition"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;choice minOccurs="0"&gt;
+ *           &lt;element name="mapper" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionMapper"/&gt;
+ *           &lt;element name="plan" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionPlan"/&gt;
+ *         &lt;/choice&gt;
+ *         &lt;element name="collector" type="{http://xmlns.jcp.org/xml/ns/javaee}Collector" minOccurs="0"/&gt;
+ *         &lt;element name="analyzer" type="{http://xmlns.jcp.org/xml/ns/javaee}Analyzer" minOccurs="0"/&gt;
+ *         &lt;element name="reducer" type="{http://xmlns.jcp.org/xml/ns/javaee}PartitionReducer" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionMapper.java b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionMapper.java
index 74429fc..32af016 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionMapper.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionMapper.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for PartitionMapper complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for PartitionMapper complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="PartitionMapper">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="PartitionMapper"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionPlan.java b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionPlan.java
index 3e3f15c..05f90dc 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionPlan.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionPlan.java
@@ -17,22 +17,22 @@
 
 
 /**
- * <p>Java class for PartitionPlan complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for PartitionPlan complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="PartitionPlan">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="partitions" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="threads" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="PartitionPlan"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="partitions" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="threads" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -49,21 +49,17 @@
 
     /**
      * Gets the value of the properties property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the properties property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the properties property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getProperties().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link JSLProperties }
      */
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionReducer.java b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionReducer.java
index 4640146..3c13abe 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionReducer.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/PartitionReducer.java
@@ -15,21 +15,21 @@
 
 
 /**
- * <p>Java class for PartitionReducer complex type.
- * <p/>
+ * Java class for PartitionReducer complex type.
+ * <p>
  * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ *
  * <pre>
- * &lt;complexType name="PartitionReducer">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="PartitionReducer"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ref" use="required" type="{http://xmlns.jcp.org/xml/ns/javaee}artifactRef" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Property.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Property.java
index 8c72797..d92c7f7 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Property.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Property.java
@@ -15,19 +15,19 @@
 
 
 /**
- * <p>Java class for Property complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Property complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Property">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Property"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Split.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Split.java
index 14173b0..a393129 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Split.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Split.java
@@ -26,22 +26,22 @@
 
 
 /**
- * <p>Java class for Split complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Split complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Split">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Split"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="flow" type="{http://xmlns.jcp.org/xml/ns/javaee}Flow" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /&gt;
+ *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -62,21 +62,17 @@
 
     /**
      * Gets the value of the flows property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the flows property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the flows property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getFlows().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Flow }
      */
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Step.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Step.java
index 2bb9727..ffb78cc 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Step.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Step.java
@@ -26,31 +26,31 @@
 
 
 /**
- * <p>Java class for Step complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Step complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Step">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/>
- *         &lt;element name="listeners" type="{http://xmlns.jcp.org/xml/ns/javaee}Listeners" minOccurs="0"/>
- *         &lt;choice minOccurs="0">
- *           &lt;element name="batchlet" type="{http://xmlns.jcp.org/xml/ns/javaee}Batchlet"/>
- *           &lt;element name="chunk" type="{http://xmlns.jcp.org/xml/ns/javaee}Chunk"/>
- *         &lt;/choice>
- *         &lt;element name="partition" type="{http://xmlns.jcp.org/xml/ns/javaee}Partition" minOccurs="0"/>
- *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *       &lt;attribute name="start-limit" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="allow-start-if-complete" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Step"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="properties" type="{http://xmlns.jcp.org/xml/ns/javaee}Properties" minOccurs="0"/&gt;
+ *         &lt;element name="listeners" type="{http://xmlns.jcp.org/xml/ns/javaee}Listeners" minOccurs="0"/&gt;
+ *         &lt;choice minOccurs="0"&gt;
+ *           &lt;element name="batchlet" type="{http://xmlns.jcp.org/xml/ns/javaee}Batchlet"/&gt;
+ *           &lt;element name="chunk" type="{http://xmlns.jcp.org/xml/ns/javaee}Chunk"/&gt;
+ *         &lt;/choice&gt;
+ *         &lt;element name="partition" type="{http://xmlns.jcp.org/xml/ns/javaee}Partition" minOccurs="0"/&gt;
+ *         &lt;group ref="{http://xmlns.jcp.org/xml/ns/javaee}TransitionElements" maxOccurs="unbounded" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /&gt;
+ *       &lt;attribute name="start-limit" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="allow-start-if-complete" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *       &lt;attribute name="next" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -190,21 +190,17 @@
 
     /**
      * Gets the value of the transitionElements property.
-     * <p/>
-     * <p/>
+     * <p>
      * This accessor method returns a reference to the live list,
      * not a snapshot. Therefore any modification you make to the
      * returned list will be present inside the JAXB object.
-     * This is why there is not a <CODE>set</CODE> method for the transitionElements property.
-     * <p/>
-     * <p/>
+     * This is why there is not a {@code set} method for the transitionElements property.
+     * <p>
      * For example, to add a new item, do as follows:
      * <pre>
      *    getTransitionElements().add(newItem);
      * </pre>
-     * <p/>
-     * <p/>
-     * <p/>
+     * <p>
      * Objects of the following type(s) are allowed in the list
      * {@link Next }
      * {@link Fail }
diff --git a/jbatch/src/main/java/org/apache/batchee/jaxb/Stop.java b/jbatch/src/main/java/org/apache/batchee/jaxb/Stop.java
index 23d197a..cb89968 100644
--- a/jbatch/src/main/java/org/apache/batchee/jaxb/Stop.java
+++ b/jbatch/src/main/java/org/apache/batchee/jaxb/Stop.java
@@ -17,19 +17,19 @@
 
 
 /**
- * <p>Java class for Stop complex type.
- * <p/>
- * <p>The following schema fragment specifies the expected content contained within this class.
- * <p/>
+ * Java class for Stop complex type.
+ * <p>
+ * The following schema fragment specifies the expected content contained within this class.
+ *
  * <pre>
- * &lt;complexType name="Stop">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/>
- *       &lt;attribute name="restart" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
+ * &lt;complexType name="Stop"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attGroup ref="{http://xmlns.jcp.org/xml/ns/javaee}TerminatingAttributes"/&gt;
+ *       &lt;attribute name="restart" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
  * </pre>
  */
 @XmlAccessorType(XmlAccessType.FIELD)
diff --git a/jbatch/src/main/java/org/apache/batchee/spi/PersistenceManagerService.java b/jbatch/src/main/java/org/apache/batchee/spi/PersistenceManagerService.java
index 38019b1..6f06979 100755
--- a/jbatch/src/main/java/org/apache/batchee/spi/PersistenceManagerService.java
+++ b/jbatch/src/main/java/org/apache/batchee/spi/PersistenceManagerService.java
@@ -157,7 +157,7 @@
 
     /**
      * Get a StepStatus
-     * <p/>
+     * <p>
      * The parent job instance id and this step name from the job xml
      * are used to determine if the current step execution have previously run.
      *
diff --git a/tools/ee6/src/main/java/org/apache/batchee/tools/services/thread/AsyncEjbBatchThreadPoolService.java b/tools/ee6/src/main/java/org/apache/batchee/tools/services/thread/AsyncEjbBatchThreadPoolService.java
index 7db5330..f4db719 100644
--- a/tools/ee6/src/main/java/org/apache/batchee/tools/services/thread/AsyncEjbBatchThreadPoolService.java
+++ b/tools/ee6/src/main/java/org/apache/batchee/tools/services/thread/AsyncEjbBatchThreadPoolService.java
@@ -28,7 +28,7 @@
 
 /**
  * This is an implementation of a {@link org.apache.batchee.spi.BatchThreadPoolService}
- * which uses an &&064;Asynchronous EJB method to spawn new Threads.
+ * which uses an &#64;Asynchronous EJB method to spawn new Threads.
  * The main reason for doing this is to have properly setup JavaEE Threads even
  * in JavaEE 6 environments where BatchEE is not deeply integrated in other ways.
  *
diff --git a/tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/BarMojo.java b/tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/BarMojo.java
index e13fc51..e47c3e4 100644
--- a/tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/BarMojo.java
+++ b/tools/maven-plugin/src/main/java/org/apache/batchee/tools/maven/BarMojo.java
@@ -52,14 +52,16 @@
 
 /**
  * create a bar archive using packaging bar and this plugin:
- * <packaging>bar</packaging>
- * <p/>
- * <plugin>
- * <groupId>org.apache.batchee</groupId>
- * <artifactId>batchee-maven-plugin</artifactId>
- * <version>0.1-incubating-SNAPSHOT</version>
- * <extensions>true</extensions>
- * </plugin>
+ * &lt;packaging&gt;bar&lt;/packaging&gt;
+ * <p>
+ * <pre><code>
+ * &lt;plugin&gt;
+ *   &lt;groupId&gt;org.apache.batchee&lt;/groupId&gt;
+ *   &lt;artifactId&gt;batchee-maven-plugin&lt;/artifactId&gt;
+ *   &lt;version&gt;0.1-incubating-SNAPSHOT&lt;/version&gt;
+ *   &lt;extensions&gt;true&lt;/extensions&gt;
+ * &lt;/plugin&gt;
+ * </code></pre>
  */
 @Mojo(name = "bar", requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, defaultPhase = LifecyclePhase.PACKAGE)
 public class BarMojo extends AbstractMojo {
