diff --git a/build.xml b/build.xml
index 8838a4bc0439ee235230b4824e1e354db9098de7..7c99179f5ebd48643ed4ba4355a04f8413be2fcc 100644
--- a/build.xml
+++ b/build.xml
@@ -64,6 +64,7 @@
             </fileset>
         </delete>
         <delete dir="javadoc"/>
+        <mkdir dir="javadoc"/>
         <mkdir dir="build/classes" description="ensure necessary directory present"/>
         <delete verbose="false" includeemptydirs="false">
             <fileset dir="build/classes" includes="**/*"/>
@@ -78,49 +79,6 @@
         </delete>
     </target>
     
-    <target name="compile" description="compile all assets">
-        <echo message="compile src, src-generated"/>
-        <mkdir dir="build/classes" description="ensure build/classes directory present"/>
-        <javac destdir="build/classes"
-                 debug="on"
-                source="1.8"
-                target="1.8"
-     includeantruntime="false">
-            <src>
-                <pathelement path="src"/>
-                <pathelement path="src-generated"/>
-            </src>
-            <classpath>
-                <pathelement path="dist/open-dis7-enumerations-classes.jar"/>
-                <pathelement path="lib/commons-io-2.6.jar"/>
-                <pathelement path="lib/guava-28.0-jre.jar"/>
-            </classpath>
-            <!-- https://ant.apache.org/manual/Tasks/javac.html#bootstrap -->
-            <!-- https://stackoverflow.com/questions/4134803/ant-passing-compilerarg-into-javac -->
-            <!-- https://stackoverflow.com/questions/20174355/how-class-loading-is-done-by-using-xbootclasspath-ppath -->
-            <!-- https://stackoverflow.com/questions/48148607/how-to-add-a-jar-to-the-boot-classpath-in-java-9 -->
-            <!-- -Xbootclasspath/p became -Xbootclasspath/a in jdk 9 -->
-            <compilerarg value="-Xbootclasspath/p:${toString:lib.path.ref}"/>
-        </javac>
-    </target>
-    
-    <target name="javadoc">
-        <javadoc  classpath="${build.classes.dir}"
-                    destdir="javadoc"
-            useexternalfile="yes"
-                    verbose="false">
-            <!-- useexternalfile="yes" avoids command error: filename or extension is too long -->
-            <fileset dir="." defaultexcludes="yes">
-                <include name="src/**/*.java"/>
-                <include name="src-generated/**/*.java"/>
-            </fileset>
-            <classpath>
-                <pathelement path="lib/commons-io-2.6.jar"/>
-                <pathelement path="lib/guava-28.0-jre.jar"/>
-            </classpath>
-        </javadoc>
-    </target>
-    
     <target name="view.issues.online" description="view online issues in web browser (Netbeans only)">
         <echo message="https://github.com/open-dis/open-dis7-java/issues" />
         <nbbrowse url="https://github.com/open-dis/open-dis7-java/issues" />
@@ -302,16 +260,7 @@
                 <include name="**/*.txt"/>
                 <include name="**/*.dislog"/>
             </fileset>
-            <fileset dir="src-generated">
-                <include name="**/dis7/**/*.java"/>
-                <!-- avoid duplicating enumerations classes, which are maintained in separate jars -->
-                <exclude name="**/entities/**/*.java"/>
-                <exclude name="**/entitytypes/**/*.java"/>
-                <exclude name="**/enumerations/**/*.java"/>
-                <exclude name="**/jammers/**/*.java"/>
-                <exclude name="**/objectTypes/**/*.java"/>
-                <exclude name="**/*.undef/**/*.java"/>
-            </fileset>
+            
             <!-- https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html -->
             <manifest>
                 <attribute name="description"            value="Java source files for ${manifest.name}"/>
@@ -330,7 +279,7 @@
         </jar>        
     </target>
     
-    <target name="jar-classes" description="merges all dis7 subpackage classes except for enumerations">
+    <target name="jar-classes" depends="compile" description="merges all dis7 subpackage classes except for enumerations">
         <jar destfile="dist/open-dis7-pdus-classes.jar"
              basedir="."
              includes="edu/nps/moves/dis7/**"
@@ -338,14 +287,7 @@
                update="true"
             zip64Mode="always">
             <fileset dir="build/classes" defaultexcludes="yes">
-                <include name="**/dis7/**/*.class"/>
-                <!-- avoid duplicating enumerations classes, which are maintained in separate jars -->
-                <exclude name="**/entities/**/*.class"/>
-                <exclude name="**/entitytypes/**/*.class"/>
-                <exclude name="**/enumerations/**/*.class"/>
-                <exclude name="**/jammers/**/*.class"/>
-                <exclude name="**/objectTypes/**/*.class"/>
-                <exclude name="**/objectTypes.undef/**/*"/>
+                <include name="**/moves/**/*.class"/>
             </fileset>
             <!-- https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html -->
             <manifest>
@@ -361,11 +303,15 @@
                 <section name="edu/nps/moves/dis7">
                     <attribute name="Sealed" value="true"/>
                 </section>
+                <section name="edu/nps/moves/spatial">
+                    <attribute name="Sealed" value="true"/>
+                </section>
             </manifest>
         </jar>        
     </target>
     
     <!-- special test harness for JUnit5 by Terry Norbraten -->
+    <!-- https://blogs.apache.org/netbeans/entry/junit-5-apache-ant-and -->
     <target depends="compile-test,-pre-test-run"
             description="Run unit tests."
             name="test" >
@@ -377,11 +323,11 @@
             <arg value="--scan-classpath=${build.test.classes.dir}"/>
             <arg value="--reports-dir=${build.test.results.dir}"/>
         </java>
-        <junitreport todir="build/test/results">
-            <fileset dir="build/test/results">
+        <junitreport todir="${build.test.results.dir}">
+            <fileset dir="${build.test.results.dir}">
                 <include name="TEST-*.xml"/>
             </fileset>
-            <report format="frames" todir="build/test/results/html"/>
+            <report format="frames" todir="${build.test.results.dir}/html"/>
         </junitreport>
     </target>
     <target depends="compile-test-single,-pre-test-run-single"
@@ -396,6 +342,33 @@
             <arg line="-c=${test.class}"/>
             <!--<arg value="-h"/>-->
         </java>
+        <junitreport todir="${build.test.results.dir}">
+            <fileset dir="${build.test.results.dir}">
+                <include name="TEST-*.xml"/>
+            </fileset>
+            <report format="frames" todir="${build.test.results.dir}/html"/>
+        </junitreport>
+    </target>
+    <target depends="compile-test-single,-pre-test-run-single"
+            description="Debug single unit test."
+            name="-debug-start-debuggee-test">
+        <java classpath="${run.test.classpath}"
+              classname="org.junit.platform.console.ConsoleLauncher"
+              fork="true">
+            <arg value="--disable-banner"/>
+            <arg value="--fail-if-no-tests"/>
+            <arg line="-c=${test.class}"/>
+            <jvmarg value="-Xdebug" />
+            <jvmarg value="-Xnoagent" />
+            <jvmarg value="-Djava.compiler=NONE" />
+            <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}" />
+        </java>
+        <junitreport todir="${build.test.results.dir}">
+            <fileset dir="${build.test.results.dir}">
+                <include name="TEST-*.xml"/>
+            </fileset>
+            <report format="frames" todir="${build.test.results.dir}/html"/>
+        </junitreport>
     </target>
     
 </project>