From dd74c5bd529b58f5286edf2e17e63601db768116 Mon Sep 17 00:00:00 2001
From: Chris Sangwin <C.J.Sangwin@ed.ac.uk>
Date: Tue, 19 Nov 2024 15:37:16 +0000
Subject: [PATCH] Update STACK sample materials.

---
 .../AlgMap-2-1.xml                            |   2 +-
 .../AlgMap-2-2.xml                            |   3 +-
 .../AlgMap-2-3.xml                            |   2 +-
 .../AlgMap-2-4.xml                            |   2 +-
 .../AlgMap-3-1.xml                            |   5 +-
 .../AlgMap-3-2.xml                            |   3 +-
 .../AlgMap-3-3.xml                            |   3 +-
 .../AlgMap-3-4.xml                            |   3 +-
 .../AlgMap-3-5.xml                            |   5 +-
 .../AlgMap-3-6.xml                            |   3 +-
 .../AlgMap-3-7.xml                            |   3 +-
 .../AlgMap-3-8.xml                            |   3 +-
 .../AlgMap-3-9.xml                            |   3 +-
 .../AlgMap-5-1.xml                            |   3 +-
 .../AlgMap-5-2.xml                            |   3 +-
 .../08-Algebraic-fractions/AlgMap-8-21.xml    |   2 +-
 .../08-Algebraic-fractions/AlgMap-8-23.xml    |   3 +-
 .../08-Algebraic-fractions/AlgMap-8-3.xml     |   2 +-
 .../08-Algebraic-fractions/AlgMap-8-5.xml     |   2 +-
 .../08-Algebraic-fractions/AlgMap-8-8.xml     |   2 +-
 .../09-Linear-equations/AlgMap-9-1.xml        |   2 +-
 .../09-Linear-equations/AlgMap-9-6.xml        |   2 +-
 .../AlgMap-10-7.xml                           |   2 +-
 .../AlgMap-10-8.xml                           |   2 +-
 .../AlgMap-11-11.xml                          |   2 +-
 .../AlgMap-11-9.xml                           |   2 +-
 .../AlgMap-13-1-.xml                          |   2 +-
 .../AlgMap-13-13.xml                          |   2 +-
 .../AlgMap-13-16.xml                          |   2 +-
 .../AlgMap-13-17.xml                          |   2 +-
 .../AlgMap-13-20.xml                          |   2 +-
 .../AlgMap-13-4.xml                           |   2 +-
 .../AlgMap-13-7.xml                           |   2 +-
 .../AlgMap-13-8.xml                           |   2 +-
 .../AlgMap-14-6.xml                           |   3 +-
 .../15-Quadratic-equations/AlgMap-15-1.xml    |   3 +-
 .../15-Quadratic-equations/AlgMap-15-3.xml    |   3 +-
 .../15-Quadratic-equations/AlgMap-15-7.xml    |   3 +-
 .../CR_Diff_04/CR-Diff-04-product-1-b.xml     |   5 +-
 .../CR_Diff_04/CR-Diff-04-product-1-c.xml     |   5 +-
 .../CR_Diff_04/CR-Diff-04-product-1-d.xml     |   5 +-
 .../CR_Diff_04/CR-Diff-04-product-1-f.xml     |   5 +-
 .../CR_Diff_04/CR-Diff-04-product-2-e.xml     |   5 +-
 .../CR_Diff_04/CR-Diff-04-product-2-g.xml     |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-1-a.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-1-b.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-1-c.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-1-d.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-1-e.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-2-a.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-2-b.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-2-d.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-2-e.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-3-a.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-3-b.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-3-c.xml    |   5 +-
 .../CR_Diff_05/CR-Diff-05-quotient-3-d.xml    |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-a.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-b.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-c.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-d.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-f.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-1-h.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-2-a.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-2-b.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-2-d.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-2-e.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-2-f.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-a.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-b.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-c.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-d.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-e.xml       |   5 +-
 .../CR_Diff_06/CR-Diff-06-chain-3-f.xml       |   5 +-
 .../CR_Diff_07/CR-Diff-07-implicit-1-a.xml    |   3 +-
 .../CR_Diff_07/CR-Diff-07-implicit-1-b.xml    |   5 +-
 .../CR_Diff_07/CR-Diff-07-implicit-1-c.xml    |   3 +-
 .../CR_Diff_07/CR-Diff-07-implicit-2-a.xml    |   3 +-
 .../CR_Diff_07/CR-Diff-07-implicit-2-b.xml    |   3 +-
 .../CR_Diff_07/CR-Diff-07-implicit-2-e.xml    |   5 +-
 .../CR-Diff-08-parametrical-1-d.xml           |   3 +-
 .../CR-Diff-08-parametrical-2-b.xml           |   3 +-
 .../CR_Diff_09/CR-Diff-09-misc-2-b.xml        |   5 +-
 .../CR_Diff_09/CR-Diff-09-misc-2-c.xml        |   3 +-
 .../CR_Diff_09/CR-Diff-09-misc-4-b.xml        |   6 +-
 .../CR_Diff_09/CR-Diff-09-misc-5-b.xml        |   7 +-
 .../CR_Int_11/CR-Int-11-linearity-1-b.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-1-c.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-1-d.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-1-e.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-1-h.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-1-k.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-2-a.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-2-d.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-2-f.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-2-l.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-3-e.xml     |   5 +-
 .../CR_Int_11/CR-Int-11-linearity-3-f.xml     |   5 +-
 .../CR_Int_12/CR-Int-12-definite-1-f.xml      |   5 +-
 .../CR_Int_12/CR-Int-12-definite-1-g.xml      |   5 +-
 .../CR_Int_12/CR-Int-12-definite-1-h.xml      |   5 +-
 .../CR_Int_12/CR-Int-12-definite-3.xml        |   5 +-
 .../CR_Int_13/CR-Int-13-parts-1-a.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-1-e.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-2-a.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-2-b.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-2-c.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-2-d.xml         |   5 +-
 .../CR_Int_13/CR-Int-13-parts-4-a.xml         |   3 +-
 .../CR_Int_13/CR-Int-13-parts-5.xml           |   5 +-
 .../CR_Int_13/CR-Int-13-parts-6.xml           |   6 +-
 .../CR_Int_13/CR-Int-13-parts-7.xml           |   6 +-
 .../CR_Int_14/CR-Int-14-substitution-1-b.xml  |   5 +-
 .../CR_Int_14/CR-Int-14-substitution-1-i.xml  |   5 +-
 .../CR_Int_14/CR-Int-14-substitution-3-b.xml  |   8 +-
 .../CR_Int_14/CR-Int-14-substitution-3-c.xml  |   6 +-
 .../CR_Int_14/CR-Int-14-substitution-3-d.xml  |   8 +-
 .../CR_Int_14/CR-Int-14-substitution-3-f.xml  |   8 +-
 .../CR_Int_14/CR-Int-14-substitution-3-g.xml  |   8 +-
 .../CR_Int_14/CR-Int-14-substitution-5-a.xml  |   5 +-
 .../CR_Int_14/CR-Int-14-substitution-6-a.xml  |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-1-b.xml   |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-1-e.xml   |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-10.xml    |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-2-a.xml   |   6 +-
 .../CR_Int_15/CR-Int-15-partialfrac-2-b.xml   |   6 +-
 .../CR_Int_15/CR-Int-15-partialfrac-3-a.xml   |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-3-b.xml   |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-3-c.xml   |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-4-b.xml   |   6 +-
 .../CR_Int_15/CR-Int-15-partialfrac-4-c.xml   |   6 +-
 .../CR_Int_15/CR-Int-15-partialfrac-5.xml     |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-6.xml     |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-7.xml     |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-8.xml     |   5 +-
 .../CR_Int_15/CR-Int-15-partialfrac-9.xml     |   2 +-
 .../CR_Int_16/CR-Int-16-trigonometric-1-b.xml |   3 +-
 .../CR_Int_16/CR-Int-16-trigonometric-3.xml   |   5 +-
 .../CR_Int_17/CR-Int-17-misc-03.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-04.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-05.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-06.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-08.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-09.xml           |   6 +-
 .../CR_Int_17/CR-Int-17-misc-10.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-12.xml           |   3 +-
 .../CR_Int_17/CR-Int-17-misc-13.xml           |   5 +-
 .../CR_Int_17/CR-Int-17-misc-14.xml           |   5 +-
 .../Doc-Examples/D-L-distance.xml             |  40 +-
 .../Doc-Examples/Drag_and_drop-1-grouping.xml |  32 +-
 .../Doc-Examples/Drag_and_drop-2-Grid.xml     |  32 +-
 .../Drag_and_drop-3-Grid_with_index.xml       |  30 +-
 .../Drag_and_drop-4-Using-images.xml          |  34 +-
 .../stacklibrary/Doc-Examples/GeoGebra.xml    |  38 +-
 .../Doc-Examples/Parsons-1-minimal.xml        |  31 +-
 .../Parsons-2-Interchangable-order.xml        |  28 +-
 .../Doc-Examples/Parsons-3-builder.xml        | 208 +++++----
 .../Features/MCQ-example-multiselqnalpha.xml  |  36 +-
 .../stacklibrary/Features/MCQ-example.xml     |  31 +-
 .../Features/Reveal_block_example.xml         | 368 ++++++++--------
 .../Features/Scientific-units.xml             |  48 +-
 .../Differential_Equation_3.xml               |   3 +-
 .../Topics/Complex_cube_roots.xml             | 412 +++++++++---------
 ...hs-Discrete_mathematics_graph-theory-2.xml |  34 +-
 .../Cross-product-non-cancellation.xml        |  54 ++-
 .../Diagonalizable-proof-comprehension.xml    | 221 +++++-----
 ...Eigenvalues-eigenvectors-give-examples.xml | 242 +++++-----
 .../LinearAlgebra/Eigenvalues-vectors-3-3.xml | 148 ++++---
 .../LinearAlgebra/Eigenvalues-vectors-4-4.xml | 191 ++++----
 .../Eigenvalues-vectors-PDPT.xml              | 156 ++++---
 .../Equation-plane-counter-example.xml        | 107 +++--
 .../LinearAlgebra/Linear-dependence.xml       |  48 +-
 .../Topics/LinearAlgebra/Linear-system.xml    | 132 +++---
 .../Matrix-Algebra-give-examples.xml          | 302 +++++++------
 .../LinearAlgebra/Proof-dot-product.xml       | 167 ++++---
 .../Proof-gaps-linear-dependence.xml          | 316 +++++++-------
 .../Show-Ax-forms-a-subspace-Parsons.xml      |  27 +-
 .../Topics/ODE_2nd_order_linear.xml           |  52 ++-
 .../Topics/Parsons-proof-template.xml         | 118 +++--
 .../Proof_comprehension_infinite_primes.xml   | 166 ++++---
 .../Proof/Proof_comprehension_roots_unity.xml | 106 +++--
 .../Proof/Proof_gaps_induction_series.xml     | 159 ++++---
 .../Topics/Topics_units_basic.xml             |  87 ++--
 .../stacklibrary/Topics/Vector-Calculus.xml   |  80 ++--
 .../Topics/equivalence_reasoning_example.xml  |  56 ++-
 ...ot-Discrete_mathematics_graph_theory-1.xml |  50 +--
 186 files changed, 2407 insertions(+), 2630 deletions(-)

diff --git a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-1.xml b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-1.xml
index 589de1919..624ecfdaf 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-1.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-1.xml
@@ -25,7 +25,7 @@ ta:factor(n);</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>{@n@} = {@ta@} </text>
+      <text>{@n@} = {@ta@}</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-2.xml b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-2.xml
index be63a16d9..838e5d2f9 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-2.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-2.xml
@@ -20,8 +20,7 @@
     <questionvariables>
       <text>a:2^(rand(1)+1)*3^(rand(2))*5^(rand(2));
 b:2^(rand(1)+1)*3^(rand(2))*5^(rand(2))*7;
-ta:ratsimp(rootscontract(radcan(sqrt(a)*sqrt(b))));
-</text>
+ta:ratsimp(rootscontract(radcan(sqrt(a)*sqrt(b))));</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-3.xml b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-3.xml
index 1c6b76b70..8ac523862 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-3.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-3.xml
@@ -32,7 +32,7 @@ ta:gcd(a,b);</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>(Hcf) of \({@a@}\) and \({@b@}\) is \({@ta@}\). </text>
+      <text>(Hcf) of \({@a@}\) and \({@b@}\) is \({@ta@}\).</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-4.xml b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-4.xml
index f0d451146..897bff045 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-4.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/02-Factorisation-of-whole-numbers/AlgMap-2-4.xml
@@ -33,7 +33,7 @@ ta:lcm(a,b);</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>(LCM) of \({@a@}\) and \({@b@}\) is \({@ta@}\). </text>
+      <text>(LCM) of \({@a@}\) and \({@b@}\) is \({@ta@}\).</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-1.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-1.xml
index 61d1f54c1..b495b3d26 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-1.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-1.xml
@@ -26,14 +26,13 @@ d:b;
 c:d+1;
 ta:(a/b)+(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[{@a/b@}+{@c/d@} = {@ta@}.\] </text>
+      <text>\[{@a/b@}+{@c/d@} = {@ta@}.\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-2.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-2.xml
index a7658e6a4..05167218d 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-2.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-2.xml
@@ -26,8 +26,7 @@ d:b;
 c:d+rand(3)+1;
 ta:(a/b)-(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-3.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-3.xml
index 045852082..cfb640303 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-3.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-3.xml
@@ -27,8 +27,7 @@ d:b+1+2*rand(3);
 c:d+rand(3)+1;
 ta:(a/b)+(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-4.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-4.xml
index 2a7b98eef..c6daab905 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-4.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-4.xml
@@ -27,8 +27,7 @@ d:rand([3,7,11]);
 c:rand([2,5,13])^rand([0,1]);
 ta:(a/b)-(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-5.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-5.xml
index 8f5d3e1c8..3e769bebe 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-5.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-5.xml
@@ -27,14 +27,13 @@ d:7;
 c:rand([1,2,3,4,5,6,8,9]);
 ta:(a/b)+(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[{@a/b@}+{@c/d@} = {@ta@}.\] </text>
+      <text>\[{@a/b@}+{@c/d@} = {@ta@}.\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-6.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-6.xml
index 4285eeae5..47c21864c 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-6.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-6.xml
@@ -27,8 +27,7 @@ d:3;
 c:rand([1,2,4,5,7,8,10]);
 ta:(a/b)-(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-7.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-7.xml
index 7f9459ff7..ef3d182dc 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-7.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-7.xml
@@ -28,8 +28,7 @@ d:f*b;
 c:d-1;
 ta:(a/b)+(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-8.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-8.xml
index 8262fc00d..280157592 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-8.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-8.xml
@@ -28,8 +28,7 @@ d:f*b;
 c:1;
 ta:(a/b)-(c/d);
 lcm:lcm(b,d);
-simp:false
-</text>
+simp:false</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-9.xml b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-9.xml
index 0fdaa11f3..f7344c556 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-9.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/03-Addition-and-subtraction-of-fractions/AlgMap-3-9.xml
@@ -28,8 +28,7 @@ d:f*rand([2,4]);
 c:d+1;
 ta:(a/b)+(c/d);
 lcm:lcm(b,d);
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-1.xml b/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-1.xml
index c2f32580f..18849d72e 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-1.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-1.xml
@@ -28,8 +28,7 @@ f:e+rand(4)+1;
 g:rand(5)+1;
 h:g+rand(4)+1;
 ta:((a/b)+(c/d))/((e/f)+(g/h));
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-2.xml b/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-2.xml
index 22c38de5e..f36c89815 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-2.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/05-Combinations-of-arithmetic-operations-on-fractions/AlgMap-5-2.xml
@@ -28,8 +28,7 @@ t:c/d;
 ta1:(s^2+2*t^2);
 ta2:(3-s*t);
 ta:ta1/ta2;
-simp:false;
-</text>
+simp:false;</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-21.xml b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-21.xml
index 9ff4c4130..2bea67bb3 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-21.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-21.xml
@@ -157,7 +157,7 @@ fta:ev(factor(ta),simp);</text>
       </expected>
     </qtest>
     <qtest>
-      <testcase>3</testcase>
+      <testcase>2</testcase>
       <description/>
       <testinput>
         <name>ans</name>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-23.xml b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-23.xml
index 6f9ae0720..9705ed3a4 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-23.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-23.xml
@@ -11,8 +11,7 @@
 Give an equivalent expression without brackets. 
 <br>
 = [[input:ans]] 
-[[validation:ans]]
-]]></text>
+[[validation:ans]]]]></text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[<html>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-3.xml b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-3.xml
index c4e14d57c..b63e2d3d8 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-3.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-3.xml
@@ -26,7 +26,7 @@ ta:ev(1/a,simp);</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ \frac{@v@}{@ev(a*v,simp)@} = {@ta@}. \] </text>
+      <text>\[ \frac{@v@}{@ev(a*v,simp)@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-5.xml b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-5.xml
index 40b3a601f..dbe5162f5 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-5.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-5.xml
@@ -24,7 +24,7 @@
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ \frac{@b-a@}{@a-b@} = {@ta@}. \] </text>
+      <text>\[ \frac{@b-a@}{@a-b@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-8.xml b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-8.xml
index e43538bb2..0a42df4a4 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-8.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/08-Algebraic-fractions/AlgMap-8-8.xml
@@ -29,7 +29,7 @@ ta:ev((a*f*(v-c))/(b*f*(v-c)^3),simp);</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ \frac{@ev(a*f*(v-c),simp)@}{@ev(b*f*(v-c)^3,simp)@} = {@ta@}. \] </text>
+      <text>\[ \frac{@ev(a*f*(v-c),simp)@}{@ev(b*f*(v-c)^3,simp)@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-1.xml b/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-1.xml
index 549bfa002..80fb543de 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-1.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-1.xml
@@ -37,7 +37,7 @@ ta:(k2-k1)/cf1;</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@cf1*v+k1@} = {@k2@} \Rightarrow {@v@} = {@ta@}. \] </text>
+      <text>\[ {@cf1*v+k1@} = {@k2@} \Rightarrow {@v@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-6.xml b/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-6.xml
index eafe27691..6587262f4 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-6.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/09-Linear-equations/AlgMap-9-6.xml
@@ -37,7 +37,7 @@ ta:35/4;</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@(3-v)/5+3@} = {@(2*v+1)/10@} \Rightarrow {@v@} = {@ta@}. \] </text>
+      <text>\[ {@(3-v)/5+3@} = {@(2*v+1)/10@} \Rightarrow {@v@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-7.xml b/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-7.xml
index 1ef7272c7..3540ffeeb 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-7.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-7.xml
@@ -12,7 +12,7 @@
     <generalfeedback format="html">
       <text>Simply remove all common factors from the expression. In this example: 
 \[ {@v^p1+v^p2@} = {@ta@}. \]
-The important thing is to remember the 1 after factoring. </text>
+The important thing is to remember the 1 after factoring.</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-8.xml b/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-8.xml
index 786d89c56..7406b65c1 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-8.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/10-Expressions-single-term-common-factors/AlgMap-10-8.xml
@@ -12,7 +12,7 @@
     <generalfeedback format="html">
       <text>Simply remove all common factors from the expression. In this example: 
 \[ {@v^p1-v^p2@} = {@ta@}. \]
-The important thing is to remember the 1 after factoring. </text>
+The important thing is to remember the 1 after factoring.</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-11.xml b/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-11.xml
index bbce06423..c5a6449ef 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-11.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-11.xml
@@ -36,7 +36,7 @@ Now you have an equation for \(x\).</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@y@} = {@sqrt(x^2+4)@} \Rightarrow x = {@ta@} . \] </text>
+      <text>\[ {@y@} = {@sqrt(x^2+4)@} \Rightarrow x = {@ta@} . \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-9.xml b/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-9.xml
index f3be7bb74..1d69b2d14 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-9.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/11-Rearranging-algebraic-formulae/AlgMap-11-9.xml
@@ -33,7 +33,7 @@ Now you have an equation for \(x\).</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[{@a@} = {@sqrt(b+x)@} \Rightarrow x = {@ta@}.\] </text>
+      <text>\[{@a@} = {@sqrt(b+x)@} \Rightarrow x = {@ta@}.\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-1-.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-1-.xml
index 65b648272..79dd07fdd 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-1-.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-1-.xml
@@ -2,7 +2,7 @@
 <quiz>
   <question type="stack">
     <name>
-      <text>AlgMap-13.1 </text>
+      <text>AlgMap-13.1</text>
     </name>
     <questiontext format="html">
       <text><![CDATA[Factorise the following: 
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-13.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-13.xml
index 50a4e5f55..55437e78c 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-13.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-13.xml
@@ -17,7 +17,7 @@ The equation is of the form 'square, twice product, square':
 Where:
 \[ a^2 = x. \]
 \[ b^2 = 4y. \]
-Therefore \((a+b)^2 = (x+4y)^2. \) </text>
+Therefore \((a+b)^2 = (x+4y)^2. \)</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-16.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-16.xml
index 57af19ee6..3b33f6b1c 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-16.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-16.xml
@@ -13,7 +13,7 @@
       <text>The trick to factorising this expression is to carry out a substitution, \(u=xy\). Then we obtain the quadratic:
 \[ u^2-2u+1, \] 
 which is easily solved by normal methods:
-\[ u^2-2u+1 = \left(u-1\right)^2 = \left(xy-1\right)^2. \]  </text>
+\[ u^2-2u+1 = \left(u-1\right)^2 = \left(xy-1\right)^2. \]</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-17.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-17.xml
index 343ead376..8368496bb 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-17.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-17.xml
@@ -32,7 +32,7 @@ which is now clearly a difference of two squares. So factorising gives:
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@(a+b)^2-(a+c)^2@} = {@ta@}. \] </text>
+      <text>\[ {@(a+b)^2-(a+c)^2@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-20.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-20.xml
index da7272cd2..ff25eab13 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-20.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-20.xml
@@ -36,7 +36,7 @@ Then factor out \(x+y\) to give:
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@(a*x+a*y-b*x-b*y)@} = {@ta@}. \] </text>
+      <text>\[ {@(a*x+a*y-b*x-b*y)@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-4.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-4.xml
index 3e41d0ca0..90f83b48c 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-4.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-4.xml
@@ -38,7 +38,7 @@ ta:factor((cf1*v+a)*(cf2*v+b));</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@expand((cf1*v+a)*(cf2*v+b))@} = {@ta@}. \] </text>
+      <text>\[ {@expand((cf1*v+a)*(cf2*v+b))@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-7.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-7.xml
index eab28d2bd..a5e17aa42 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-7.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-7.xml
@@ -43,7 +43,7 @@ ta:factor((cf1*v+a)*(cf2*v+b));</text>
       <text><![CDATA[<p>[[feedback:prt1]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[ {@expand((cf1*v+a)*(cf2*v+b))@} = {@ta@}. \] </text>
+      <text>\[ {@expand((cf1*v+a)*(cf2*v+b))@} = {@ta@}. \]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-8.xml b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-8.xml
index 218cf00ce..d5b67e265 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-8.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/13-Factorising-algebraic-expressions/AlgMap-13-8.xml
@@ -148,7 +148,7 @@ ta:factor((cf1*v+a)*(cf2*v+b));</text>
       </expected>
     </qtest>
     <qtest>
-      <testcase>3</testcase>
+      <testcase>2</testcase>
       <description/>
       <testinput>
         <name>ans</name>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/14-Algebraic-fractions-involving-factorising/AlgMap-14-6.xml b/samplequestions/stacklibrary/Algebra-Refresher/14-Algebraic-fractions-involving-factorising/AlgMap-14-6.xml
index f9bebeeab..c8212ad5e 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/14-Algebraic-fractions-involving-factorising/AlgMap-14-6.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/14-Algebraic-fractions-involving-factorising/AlgMap-14-6.xml
@@ -14,8 +14,7 @@
       <text>By factorisng the numerator and the denominator we obtain:
 \[\frac{@factor(n)@}{@factor(d)@}.\]
 Then we can cancel the \({@x@}\)'s and constants from the numerator
-and denominator to obtain: \[ {@ta@}. \]
-</text>
+and denominator to obtain: \[ {@ta@}. \]</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-1.xml b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-1.xml
index a7ee1c797..63bcf8042 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-1.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-1.xml
@@ -14,8 +14,7 @@ Write this quadratic in factored form: [[input:ansf]]\(=0\). [[validation:ansf]]
 <br>
 Solve this equation, giving your answer as a set \(\left(\mbox{e.g. }\left\{x_1 , x_2\right\}\right)\): <br>
 <br>
-\({@v@} \in \) [[input:ans]] [[validation:ans]][[feedback:prt1]]
-]]></text>
+\({@v@} \in \) [[input:ans]] [[validation:ans]][[feedback:prt1]]]]></text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[There are multiple ways of solving quadratic equations but if you can spot how to factorise the quadratic then this method is by far the fastest and simplest. In this example we can factorise the quadratic to give: 
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-3.xml b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-3.xml
index d5d341878..bb8cd6de4 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-3.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-3.xml
@@ -17,8 +17,7 @@ Solve the quadratic equation \({@tq@}=0\).
 Give your answer as a set 
 \(\left(\mbox e.g.\ \left\{x_1 , x_2\right\} \right)\): <br>
 [[input:ans2]] [[validation:ans2]] 
-[[feedback:prt1]]
-]]></text>
+[[feedback:prt1]]]]></text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[When solving a more complicated quadratic a better option, than factorising, is completing the square (The method by which we remove the {@v@} term). The general rule is:
diff --git a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-7.xml b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-7.xml
index d9bb02a05..82f5d89b5 100644
--- a/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-7.xml
+++ b/samplequestions/stacklibrary/Algebra-Refresher/15-Quadratic-equations/AlgMap-15-7.xml
@@ -13,8 +13,7 @@
 [[validation:ans]]  
 
 <br>
-(i.e. the form \(\left({@v@}+a\right)^2+b\)).
-]]></text>
+(i.e. the form \(\left({@v@}+a\right)^2+b\)).]]></text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Our aim is to 'destroy' the \(x\) term. We do this by considering the general quadratic:
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-b.xml
index e27abfa89..84f7f90f0 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -17,7 +16,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}({@pp1@})\right]\cdot {@pp2@} + ({@pp1@})\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  ({@diff(pp1,v)@})\cdot {@pp2@} + ({@pp1@})\cdot {@diff(pp2,v)@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-c.xml
index 1d27af40a..3f6501c65 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-c.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -17,7 +16,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}({@pp1@})\right]\cdot {@pp2@} + ({@pp1@})\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  ({@diff(pp1,v)@})\cdot {@pp2@} + ({@pp1@})\cdot {@diff(pp2,v)@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-d.xml
index 665720ec0..2366b21bc 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -17,7 +16,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}({@pp1@})\right]\cdot {@pp2@} + ({@pp1@})\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  ({@diff(pp1,v)@})\cdot {@pp2@} + ({@pp1@})\cdot {@diff(pp2,v)@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-f.xml
index 6e9a4f449..8e5b4c36f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-1-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[\left({@pp1@}\right)\left({@pp2@}\right)\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -17,7 +16,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}({@pp1@})\right]\cdot {@pp2@} + ({@pp1@})\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  \left({@diff(pp1,v)@}\right)\cdot {@pp2@} + \left({@pp1@}\right)\cdot {@diff(pp2,v)@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-e.xml
index f0c9056fc..b3fff060b 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-e.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}[{@p@}]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -18,7 +17,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}[{@pp1@}]\right]\cdot {@pp2@} + {@pp1@}\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  {@diff(pp1,v)@}\cdot {@pp2@} + {@pp1@}\cdot [{@diff(pp2,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-g.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-g.xml
index 460a1ac9c..4da2a22d2 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-g.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_04/CR-Diff-04-product-2-g.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}[{@p@}]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the product rule <hint>calc_product_rule</hint> as follows:
@@ -18,7 +17,7 @@
   \frac{d}{d{@v@}}[{@p@}] &\displaystyle =&\displaystyle  \left[\frac{d}{d{@v@}}[{@pp1@}]\right]\cdot {@pp2@} + {@pp1@}\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right] \\
    &\displaystyle =&\displaystyle  {@diff(pp1,v)@}\cdot {@pp2@} + {@pp1@}\cdot [{@diff(pp2,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-a.xml
index acbd4060a..9266d4da4 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{{@diff(pp1,v)*pp2@} - {@pp1*diff(pp2,v)@}}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  \frac{@diff(pp1,v)*pp2-pp1*diff(pp2,v)@}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-b.xml
index da2be8cce..6f71fd2b7 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{{@diff(pp1,v)*pp2@} - {@pp1*diff(pp2,v)@}}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  \frac{@diff(pp1,v)*pp2-pp1*diff(pp2,v)@}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-c.xml
index 38eaa5f64..d7de93b43 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-c.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{{@diff(pp1,v)*pp2@} - {@pp1*diff(pp2,v)@}}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  \frac{@diff(pp1,v)*pp2-pp1*diff(pp2,v)@}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-d.xml
index a800c6717..56cdf4ffc 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{{@diff(pp1,v)*pp2@} - {@pp1*diff(pp2,v)@}}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  \frac{@diff(pp1,v)*pp2-pp1*diff(pp2,v)@}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-e.xml
index 30a097096..dd4b46c43 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-1-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{{@diff(pp1,v)*pp2@} - {@pp1*diff(pp2,v)@}}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  \frac{@diff(pp1,v)*pp2-pp1*diff(pp2,v)@}{({@pp2@})^2} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-a.xml
index f8d3e1162..48dfc1644 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-a.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -18,7 +17,7 @@
   \frac{d}{d{@v@}}\left[{@p@}\right] &\displaystyle =&\displaystyle  \frac{\left[\frac{d}{d{@v@}}({@pp1@})\right]\cdot {@pp2@} - {@pp1@}\cdot \left[\frac{d}{d{@v@}}[{@pp2@}]\right]}{[{@pp2@}]^2} \\
    &\displaystyle =&\displaystyle  \frac{[{@diff(pp1,v)@}]\cdot {@pp2@} - {@pp1@}\cdot [{@diff(pp2,v)@}]}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-b.xml
index 6ac12771a..ed54942b0 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-b.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-d.xml
index 24b800fdd..804d4debf 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-d.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -19,7 +18,7 @@
    &\displaystyle =&\displaystyle  \frac{[{@diff(pp1,v)@}]\cdot {@pp2@} - {@pp1@}\cdot [{@diff(pp2,v)@}]}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@}\\
    &\displaystyle =&\displaystyle  {@ratsimp(diff(p,v))@}.
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-e.xml
index 6b8985c21..329136fe3 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-2-e.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-a.xml
index 152956b1a..790ae0fbd 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-a.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-b.xml
index 24d2bf061..cfc3ba0be 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-b.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-c.xml
index fcf4dc4c0..78a535414 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-c.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-d.xml
index f0e345de8..41b4fbd03 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_05/CR-Diff-05-quotient-3-d.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left[{@p@}\right]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the quotient rule <hint>calc_quotient_rule</hint> as follows:
@@ -20,7 +19,7 @@
    &\displaystyle =&\displaystyle  \frac{{@factor(diff(pp1,v))*pp2@} - {@pp1*factor(diff(pp2,v))@}}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  \frac{@factor(factor(diff(pp1,v))*pp2-pp1*factor(diff(pp2,v)))@}{@pp2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-a.xml
index 49c7f4686..d6e695d45 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@rdm2@} \\
    &\displaystyle =&\displaystyle  {@rdm3*rdm2@}({@pp@})^{@rdm3-1@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-b.xml
index 366395b6c..8da5b12ab 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm2@}\). So,
    &\displaystyle =&\displaystyle  {@rdm2@}g^{{@rdm2@}-1}\cdot (-{@rdm1@}){@v@}^{{@rdm1@}-1} \\
    &\displaystyle =&\displaystyle  -{@rdm1*rdm2@}{@v@}^{@rdm1-1@}({@pp@})^{@rdm2-1@} \\
    &\displaystyle =&\displaystyle  -{@rdm1*rdm2*v^(rdm1-1)*pp^(rdm2-1)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-c.xml
index f1f7c9df7..43b6d9768 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-c.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@rdm2@} \\
    &\displaystyle =&\displaystyle  {@rdm3*rdm2@}({@pp@})^{@rdm3-1@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-d.xml
index 2a19aeb4d..00594b58b 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@rdm2@} \\
    &\displaystyle =&\displaystyle  {@rdm3*rdm2@}({@pp@})^{@rdm3-1@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-f.xml
index 60408867e..947a43084 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  {@rdm3@}({@pp@})^{@rdm3-1@}[{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-h.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-h.xml
index c0e0bb2c9..a83aca2f8 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-h.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-1-h.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  {@rdm3@}({@pp@})^{@rdm3-1@}[{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-a.xml
index d478c5da6..45af7f1ff 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=g({@v@})^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@rdm3@}g^{{@rdm3@}-1}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  {@rdm3@}({@pp@})^{@rdm3-1@}[{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-b.xml
index 12f9cde80..b867e181b 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=sin(g({@v@}))\). So,
    &\displaystyle =&\displaystyle  {@diff(sin(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  [{@subst(pp,g,diff(sin(g),g))@}][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-d.xml
index cbf3ebc52..1d3d903b3 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=(g({@v@}))^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@diff(tan(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  [{@subst(pp,g,diff(tan(g),g))@}][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-e.xml
index be277becb..2264b4880 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=(g({@v@}))^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@diff((g)^rdm3,g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  [{@subst(pp,g,diff((g)^rdm3,g))@}][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-f.xml
index f2e51b1bf..998d4b483 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-2-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=(g({@v@}))^{@rdm3@}\). So,
    &\displaystyle =&\displaystyle  {@diff((g)^rdm3,g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  \left[{@subst(pp,g,diff((g)^rdm3,g))@}\right][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-a.xml
index 000abe1db..af84b26cd 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \[f({@v@})=e^{g({@v@})}\]. So,
    &\displaystyle =&\displaystyle  {@diff(exp(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  \left[{@subst(pp,g,diff(exp(g),g))@}\right][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-b.xml
index 90d08d0d7..8b10db9cd 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \[f({@v@})=e^{(g({@v@}))}\]. So,
    &\displaystyle =&\displaystyle  {@diff(exp(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  [{@subst(pp,g,diff(exp(g),g))@}][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-c.xml
index c4cedece3..50bee807c 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-c.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=cos(g({@v@}))\). So,
    &\displaystyle =&\displaystyle  {@diff(cos(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  [{@subst(pp,g,diff(cos(g),g))@}][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-d.xml
index 47b5365c4..a4a463870 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=ln(g({@v@}))\). So,
    &\displaystyle =&\displaystyle  {@diff(log(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  \left[{@subst(pp,g,diff(log(g),g))@}\right][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-e.xml
index 4ecab0209..2c4290d30 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-e.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}[{@p@}]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ Then \(f({@v@})=sin[g({@v@})]\). So,
    &\displaystyle =&\displaystyle  \frac{d}{dg}[sin(g)]\cdot \frac{d}{d{@v@}}[{@pp@}] \\
    &\displaystyle =&\displaystyle  {@diff(sin(g),g)@}\cdot \frac{@rdm@}{{@rdm@} {@v@}} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-f.xml
index 2b830006f..99df3331d 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_06/CR-Diff-06-chain-3-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Differentiate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the chain rule <hint>calc_chain_rule</hint> as follows:
@@ -23,7 +22,7 @@ So \(f({@v@})=ln(g({@v@}))\). So,
    &\displaystyle =&\displaystyle  {@diff(log(g),g)@}\cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  \left[{@subst(pp,g,diff(log(g),g))@}\right][{@diff(pp,v)@}] \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-a.xml
index 70bc474ff..8f9d5c897 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-a.xml
@@ -9,8 +9,7 @@
 
 \[x = {@p@}\]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-b.xml
index 78247f518..d449631ce 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-b.xml
@@ -9,8 +9,7 @@
 
 \[x = {@p@}\]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[\[x={@p@}\] So,
@@ -22,7 +21,7 @@
 \[\begin{array}{rcl}\displaystyle 
   \frac{d{@v@}}{dx} &\displaystyle =&\displaystyle  \frac{1}{2{@v@} -\frac{1}{{@v@}^2}} \\
    &\displaystyle =&\displaystyle  \frac{{@v@}^2}{2{@v@}^3+1}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-c.xml
index 2e7b4a821..a8f46c831 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-1-c.xml
@@ -9,8 +9,7 @@
 
 \[x = {@p@}\]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-a.xml
index 8c4a02fb8..14bdce377 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \(\frac{dy}{dx}\) where \({@p@}=0\) using implicit differentiation.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text>Differentiating implicitly we obtain:
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-b.xml
index 3f478656d..f5a44b887 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \(\frac{dy}{dx}\) where \({@p@}=0\) using implicit differentiation.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text>\[y^2-y+x^2+x=0\] So,
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-e.xml
index 32653f628..1996f2a5b 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_07/CR-Diff-07-implicit-2-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \(\frac{dy}{dx}\) where \({@p@}=0\) using implicit differentiation.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text>Differentiating implicity with respect to x we obtain:
@@ -16,7 +15,7 @@
 \[ \frac{dy}{dx}\left({@exp(y)-1/y@}\right) = {@1/x-1@}. \]
 \[\frac{dy}{dx} = {@(1/x-1)/(exp(y)-1/y)@}. \]
 Rationalising and factorising gives:
-\[\frac{dy}{dx} = {@ans@}.\] </text>
+\[\frac{dy}{dx} = {@ans@}.\]</text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-1-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-1-d.xml
index a33c632fc..8d102444f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-1-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-1-d.xml
@@ -20,8 +20,7 @@
     <questionvariables>
       <text>v:t;
 x:log(t)+t;
-y:t-log(t);
-</text>
+y:t-log(t);</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-2-b.xml
index 47c68c5e9..a68bed2e2 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_08/CR-Diff-08-parametrical-2-b.xml
@@ -22,8 +22,7 @@
 rdm1:2+rand(4);
 rdm2:2+rand(4);
 x:cos(rdm1*v);
-y:tan(rdm2*v);
-</text>
+y:tan(rdm2*v);</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-b.xml
index 4e3398b24..24f2e6ac5 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-b.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}\left( {@p@}\right). \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem you will need to use the product rule <hint>calc_product_rule</hint> and the quotient rule<hint>calc_quotient_rule</hint>. 
@@ -35,7 +34,7 @@ Hence,
    &\displaystyle =&\displaystyle  \frac{[{@diff(p1,v)@}]{@p2@} - {@p1@}[{@diff(p2,v)@}]}{[{@p2@}]^2} \\
    &\displaystyle =&\displaystyle  \frac{{@diff(p1,v)*p2@} - {@p1*diff(p2,v)@}}{@p2^2@} \\
    &\displaystyle =&\displaystyle  {@factor(diff(p,v))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-c.xml
index 025ea8646..d950989d0 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-2-c.xml
@@ -27,8 +27,7 @@ pp1:ppp1*ppp2;
 pp2:tan(rdm1*v);
 p:pp1/pp2;
 p2:cos(rdm1*v)*cos(rdm2*v)
-ta:diff(p2,v);
-</text>
+ta:diff(p2,v);</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-4-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-4-b.xml
index ad4fa3b18..3fe28faf4 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-4-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-4-b.xml
@@ -8,8 +8,7 @@
       <text>Find the following derivative:
 \[ \frac{d}{d{@v@}}[{@p@}]. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this question, you will have to use the chain rule <hint>calc_chain_rule</hint> more than once. 
@@ -37,8 +36,7 @@ So,
    &\displaystyle =&\displaystyle  e^g \cdot {@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  e^{@pp@}{@diff(pp,v)@} \\
    &\displaystyle =&\displaystyle  {@diff(p,v)@}
- \end{array}\] 
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-5-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-5-b.xml
index 58d9fb130..09423a820 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-5-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Diff_09/CR-Diff-09-misc-5-b.xml
@@ -8,8 +8,7 @@
       <text>Find the following second derivative:
 \[ \frac{d^2}{d{@v@}^2}({@p@}). \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[For this question, note that the second derivative of a function is the derivative of the first derivative of that function, that is, 
@@ -26,9 +25,7 @@ So, to calculate the second derivative of {@p@} with respect to {@v@}, you have
    &\displaystyle =&\displaystyle  \frac{d}{d{@v@}}({@diff(p,v)@}) \\
    &\displaystyle =&\displaystyle  \left[ \frac{d}{d{@v@}}({@diff(pp,v)@})\right]\cdot {@p@} + {@diff(pp,v)@}\cdot \left[\frac{d}{d{@v@}}({@p@})\right] \\
    &\displaystyle =&\displaystyle  {@diff(pp,v,2)*p@} + {@diff(pp,v)*diff(p,v)@}
- \end{array}\] 
-
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-b.xml
index dafcfc62c..60a60feed 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -17,7 +16,7 @@
  \int \left({@p@}\right) d{@v@} &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}[{@int(ppp1,v)@}] \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-c.xml
index 11cb41354..390637828 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-c.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -17,7 +16,7 @@
  \int \left({@p@}\right) d{@v@} &\displaystyle =&\displaystyle  \int {@pp1@} d{@v@} - \int {@pp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(ppp1,v)@} - {@int(ppp2,v)@} + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-d.xml
index 6ba429103..f27c59ed6 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -17,7 +16,7 @@
  \int \left({@p@}\right) d{@v@} &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}[{@int(ppp1,v)@}] \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-e.xml
index b3c1ae677..697dcd09e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -17,7 +16,7 @@
  \int \left({@p@}\right) d{@v@} &\displaystyle =&\displaystyle  \int {@pp1@} d{@v@} - \int {@pp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(ppp1,v)@} - {@int(ppp2,v)@} + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-h.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-h.xml
index 3ad855d98..f3428979e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-h.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-h.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -17,7 +16,7 @@
  \int \left({@p@}\right) d{@v@} &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}[{@int(ppp1,v)@}] \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-k.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-k.xml
index c86ef19bd..492469bc1 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-k.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-1-k.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -18,7 +17,7 @@
    &\displaystyle =&\displaystyle  {@rdm@}\int {@ppp1@} d{@v@} - {@rdm@}\int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm@}{@int(ppp1,v)@} - {@rdm@}{@int(ppp2,v)@} + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-a.xml
index c0b97596b..1bd6cfd05 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -18,7 +17,7 @@
    &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} + \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}\left[{@int(ppp1,v)@}\right] + \left[{@int(ppp2,v)@}\right] + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-d.xml
index da8e126a2..ed2b3e551 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-d.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -18,7 +17,7 @@
    &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} + \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}\left[{@int(ppp1,v)@}\right] + \left[{@int(ppp2,v)@}\right] + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-f.xml
index e3d46e12a..620a95576 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -18,7 +17,7 @@
    &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} + {@rdm2@}\int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}\left[{@int(ppp1,v)@}\right] + {@rdm2@}\left[{@int(ppp2,v)@}\right] + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-l.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-l.xml
index a90ac0a84..dbcc98802 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-l.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-2-l.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate \[{@p@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the linearity rules for integration <hint>calc_int_linearity_rule</hint> as follows:
@@ -18,7 +17,7 @@
    &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} + \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@}\left[{@int(ppp1,v)@}\right] + \left[{@int(ppp2,v)@}\right] + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-e.xml
index 4cb92a539..29b5fba5d 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Simplify and integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Using the distributive law and the properties of exponentials <hint>alg_indices</hint> we get that
@@ -24,7 +23,7 @@ So, using linearity in integration <hint>calc_int_linearity_rule</hint>,
    &\displaystyle =&\displaystyle  \int {@pp2*ppp1@} d{@v@} - \int {@pp2*ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(pp2*ppp1,v)@} - {@int(pp2*ppp2,v)@} + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-f.xml
index 21a27ef04..6be5efdd7 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_11/CR-Int-11-linearity-3-f.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Simplify and integrate \[\frac{@pp1@}{@pp2@}\] with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Using the distributive law and the properties of exponentials <hint>alg_indices</hint> we get that
@@ -24,7 +23,7 @@ So, using linearity in integration <hint>calc_int_linearity_rule</hint>,
    &\displaystyle =&\displaystyle  \int {@ppp1/pp2@} d{@v@} - \int {@ppp2/pp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(ppp1/pp2,v)@} - {@int(ppp2/pp2,v)@} + c \\
    &\displaystyle =&\displaystyle  {@int(p,v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-f.xml
index 2357a6895..a86eacb18 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-f.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm2@}{@p@}d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) - F(b).\]
@@ -25,7 +24,7 @@ Then,
  \int^{@rdm3@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm2,v,q)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)-subst(rdm2,v,q)@} 
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-g.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-g.xml
index f84c99c49..3474c3b10 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-g.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-g.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm2@}{@p@}d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)+c\] then \[\int^a_b f(x) dx = F(a) - F(b).\]
@@ -25,7 +24,7 @@ Then,
  \int^{@rdm3@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm2,v,q)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)-subst(rdm2,v,q)@} 
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-h.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-h.xml
index 96782ef06..f8b11e4cc 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-h.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-1-h.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm2@}{@p@}d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)+c\] then \[\int^a_b f(x) dx = F(a) - F(b).\]
@@ -25,7 +24,7 @@ Then,
  \int^{@rdm3@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm2,v,q)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)-subst(rdm2,v,q)@} 
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-3.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-3.xml
index 5fa078ea8..a6bba5a02 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-3.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_12/CR-Int-12-definite-3.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm4@}{@p@}d{@v@}.\]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) - F(b).\]
@@ -25,7 +24,7 @@ Then,
  \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm4@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@}-{@subst(rdm4,v,q)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)-subst(rdm4,v,q)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-a.xml
index 21bfbdca5..55b935ecb 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \(u\) and \(v\) are both functions of \(x\) then \[\int u dv = uv - \int v du.\]
@@ -24,7 +23,7 @@ So,
    &\displaystyle =&\displaystyle  {@pp1@}{@int(pp2,v)@} - \int {@int(pp2,v)@}{@diff(pp1,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp1*int(pp2,v)@} - \int {@int(pp2,v)*diff(pp1,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp1*int(pp2,v)-int((int(pp2,v)*diff(pp1,v)),v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-e.xml
index 1a1208880..ee8378c06 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-1-e.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@}.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \(u\) and \(v\) are both functions of \(x\) then \[\int u dv = uv - \int v du.\]
@@ -24,7 +23,7 @@ So,
    &\displaystyle =&\displaystyle  {@pp1@}{@int(pp2,v)@} - \int {@int(pp2,v)@}{@diff(pp1,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp1*int(pp2,v)@} - \int {@int(pp2,v)*diff(pp1,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp1*int(pp2,v)-int((int(pp2,v)*diff(pp1,v)),v)@} + c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-a.xml
index 4e802a8d6..bf271ed9f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-a.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) -
@@ -39,7 +38,7 @@ Then,
  \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm4@}) \\ 
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm4,v,q)@} \\
    &\displaystyle =&\displaystyle  {@int(p,v,rdm4,rdm3)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-b.xml
index 1dd95a05e..9d6e366e4 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-b.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) -
@@ -39,7 +38,7 @@ Then,
  \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm4@}) \\ 
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm4,v,q)@} \\
    &\displaystyle =&\displaystyle  {@int(p,v,rdm4,rdm3)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-c.xml
index c8210257c..20c9a71da 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-c.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) -
@@ -42,7 +41,7 @@ Then,
 \[\begin{array}{rcl}\displaystyle 
  \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm4@}) \\ 
    &\displaystyle =&\displaystyle  {@rdm1*subst(rdm3,v,q)@} - {@rdm1*subst(rdm4,v,q)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-d.xml
index b855904df..cef9cfa0e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-2-d.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then \[\int^a_b f(x) dx = F(a) -
@@ -39,7 +38,7 @@ Then,
  \int^{@rdm3@}_{@rdm4@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm3@}) - F({@rdm4@}) \\ 
    &\displaystyle =&\displaystyle  {@subst(rdm3,v,q)@} - {@subst(rdm4,v,q)@} \\
    &\displaystyle =&\displaystyle  {@int(p,v,rdm4,rdm3)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-4-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-4-a.xml
index c977706d2..670d2701c 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-4-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-4-a.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral:
 \[ \int^{@rdm2@}_{@rdm3@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \[\int f(x) dx = F(x)\] then 
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-5.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-5.xml
index 1ef2e1be0..3dbdb09fb 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-5.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-5.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@} using the method of integration by parts, and taking \({@p@}=1\cdot \ {@p@}\).
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \(u\) and \(v\) are both functions of {@v@} then \[\int u dv = uv - \int v du.\]
@@ -24,7 +23,7 @@ Then,
    &\displaystyle =&\displaystyle  {@p@}{@int(1,v)@} - \int {@int(1,v)@}{@diff(p,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@p*int(1,v)@} - \int {@int(1,v)*diff(p,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@p*int(1,v)-int((int(1,v)*diff(p,v)),v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-6.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-6.xml
index 11d0b4f9d..20b9f413e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-6.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-6.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@} using the method of integration by parts.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the method of integration by parts <hint>calc_int_methods_parts</hint> as follows:
@@ -32,8 +31,7 @@ So,
 \[\begin{array}{rcl}\displaystyle 
 2\int {@p@} d{@v@} &\displaystyle =&\displaystyle  {@pp1*pp1@} + c \\
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  {@int(p,v)@} + k
- \end{array}\] 
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-7.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-7.xml
index 1b31f0cac..fe0b3616f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-7.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_13/CR-Int-13-parts-7.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to \(t\) using the method of integration by parts.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to use the method of integration by parts 
@@ -46,8 +45,7 @@ Hence,
 \[\begin{array}{rcl}\displaystyle
 2\int {@p@} dt &\displaystyle =&\displaystyle  {@pp1*int(pp2,t)-diff(pp1,t)*int(int(pp2,t),t)@} + c \\
 \int {@p@} dt &\displaystyle =&\displaystyle  {@ta@} + k.
-\end{array}\]
-]]></text>
+\end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-b.xml
index 11ed10480..56cf54e72 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@} using the substitution \(u={@ppp@}\).
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to calculate \[\int {@p@} d{@v@}\] by means of the substitution \(u={@ppp@}\) <hint>calc_int_methods_substitution</hint>.
@@ -22,7 +21,7 @@ Hence,
    &\displaystyle =&\displaystyle  \int {@subst(u,ppp,p)/diff(ppp,v)@} d{@u@} \\
    &\displaystyle =&\displaystyle  {@int(subst(u,ppp,p)/diff(ppp,v),u)+c@} \\
    &\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-i.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-i.xml
index cb08b5c66..73265af09 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-i.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-1-i.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Integrate {@p@} with respect to {@v@} using the substitution \(u={@ppp@}\).
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to calculate \[\int {@p@} d{@v@}\] by means of the substitution \(u={@ppp@}\) <hint>calc_int_methods_substitution</hint>.
@@ -22,7 +21,7 @@ Hence,
    &\displaystyle =&\displaystyle  \int {@subst(u,ppp,p)/diff(ppp,v)@} d{@u@} \\
    &\displaystyle =&\displaystyle  {@int(subst(u,ppp,p)/diff(ppp,v),u)+c@} \\
    &\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-b.xml
index eb782aeec..c88469164 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-b.xml
@@ -10,8 +10,7 @@
 Hint: Use the substitution \(u = {@pp2@}\)
 <br />
 [[input:ans1]] 
-[[validation:ans1]]
-]]></text>
+[[validation:ans1]]]]></text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to solve \[\int {@p@} d{@v@}\] using the substitution \(u = {@pp2@}\) <hint>calc_int_methods_substitution</hint>.
@@ -38,7 +37,7 @@ Then,
 \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm1@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,subst(pp2,u,int(expand(subst(q,v,p)*diff(q,u)),u)))@}-{@subst(rdm2,v,subst(pp2,u,int(expand(subst(q,v,p)*diff(q,u)),u)))@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,subst(pp2,u,int(expand(subst(q,v,p)*diff(q,u)),u)))-subst(rdm2,v,subst(pp2,u,int(expand(subst(q,v,p)*diff(q,u)),u)))@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
@@ -66,8 +65,7 @@ q1:(int(p,v));]]></text>
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]
-</text>
+      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-c.xml
index 472a0580a..60a489fd8 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-c.xml
@@ -53,15 +53,13 @@ pp2:(v+rdm3)^(1/2);
 p:v*pp2;
 dumvar7:u;
 q:rhs(solve(u=pp2,v)[1]);
-q1:int(p,v);
-]]></text>
+q1:int(p,v);]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]
-</text>
+      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-d.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-d.xml
index ff02a9a22..1f4868571 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-d.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-d.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral: \[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@}\]
 Hint: Use the substitution \(u = {@pp2@}\)
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to solve \[\int {@p@} d{@v@}\] using the substitution \(u = {@pp2@}\) <hint>calc_int_methods_substitution</hint>.
@@ -36,7 +35,7 @@ Then,
 \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm1@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)@}-{@subst(rdm2,v,q1)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)-subst(rdm2,v,q1)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
@@ -61,8 +60,7 @@ q1:factor(int(p,v));</text>
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]
-</text>
+      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-f.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-f.xml
index f1f82a993..add8e3d0e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-f.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-f.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral: \[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@}\]
 Hint: Use the substitution \(u = {@pp2@}\)
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to solve \[\int {@p@} d{@v@}\] using the substitution \(u = {@pp2@}\) <hint>calc_int_methods_substitution</hint>.
@@ -36,7 +35,7 @@ Then,
 \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm1@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)@}-{@subst(rdm2,v,q1)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)-subst(rdm2,v,q1)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
@@ -59,8 +58,7 @@ q1:int(p,v);</text>
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]
-</text>
+      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-g.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-g.xml
index 8a2aa58f7..d5298df16 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-g.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-3-g.xml
@@ -8,8 +8,7 @@
       <text>Evaluate the following definite integral: \[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@}\]
 Hint: Use the substitution \(u = {@pp2@}\)
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to solve \[\int {@p@} d{@v@}\] using the substitution \(u = {@pp2@}\) <hint>calc_int_methods_substitution</hint>.
@@ -36,7 +35,7 @@ Then,
 \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm1@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)@}-{@subst(rdm2,v,q1)@} \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q1)-subst(rdm2,v,q1)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
@@ -61,8 +60,7 @@ q1:int(p,v);]]></text>
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]
-</text>
+      <text>\[\int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} = {@int(p,v,rdm2,rdm1)@}\]</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text/>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-5-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-5-a.xml
index 59ff81350..246b1d89a 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-5-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-5-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find the following integral:\[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to calculate \[\int {@p@} d{@v@}\] by means of the substitution \(u={@pp1@}\) <hint>calc_int_methods_substitution</hint>.
@@ -19,7 +18,7 @@ Hence,
 
 \[\begin{array}{rcl}\displaystyle  
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@pp2/u@} \frac{d{@u@}}{@diff(pp1,v)@} \\&\displaystyle =&\displaystyle  \int {@1/u@} d{@u@} \\&\displaystyle =&\displaystyle  {@int(1/u,u)+c@} \\&\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-6-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-6-a.xml
index 18ce062ca..83587aea1 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-6-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_14/CR-Int-14-substitution-6-a.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Using the method of integration by substitution, find the following integral:\[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[We need to calculate \[\int {@p@} d{@v@}\] by means of the substitution \(u={@pp1@}\) <hint>calc_int_methods_substitution</hint>.
@@ -19,7 +18,7 @@ Hence,
 
 \[\begin{array}{rcl}\displaystyle  
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@pp2/u@} \frac{d{@u@}}{@diff(pp1,v)@} \\&\displaystyle =&\displaystyle  \int {@pp2/u/diff(pp1,v)@} d{@u@} \\&\displaystyle =&\displaystyle  {@pp2/diff(pp1,v)@} \int {@1/u@} d{@u@} \\&\displaystyle =&\displaystyle  {@pp2/diff(pp1,v)@}{@int(1/u,u)+c@} \\&\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-b.xml
index af57ed740..d5a741533 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-b.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following integral:
 \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -36,7 +35,7 @@ Hence,
  \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@} \int {@ppp1@} d{@v@} + {@rdm2@} \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-e.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-e.xml
index e729f1730..ab6e4d318 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-e.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-1-e.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following integral:
 \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -36,7 +35,7 @@ Hence,
  \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1@} \int {@ppp1@} d{@v@} + {@rdm2@} \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-10.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-10.xml
index 3a72682cd..c3d793c6f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-10.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-10.xml
@@ -9,8 +9,7 @@
 \[ \int {@p@} d{@v@} \]
 by expressing the integrand in partial fractions.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Since the degree of the numerator is greater than the degree of the denominator we need to use long division the get a simpler form to express \[{@p@}.\] <hint>alg_partial_fractions</hint>
@@ -39,7 +38,7 @@ So,
    &\displaystyle =&\displaystyle  {@rdm2@} \int {@ppp1@} d{@v@} + {@rdm3@} \int {@ppp2@} d{@v@} + \int ({@pp3@}) d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm3*int(ppp2,v)@} + {@int(pp3,v)@}+c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm3*int(ppp2,v)+int(pp3,v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-a.xml
index 9e9a6da34..981c517b6 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-a.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following definite integral:
 \[ \int^{@rdm5@}_{@rdm6@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express the integrand as the sum of its partial fractions.
@@ -43,8 +42,7 @@ Then,
   \int^{@rdm5@}_{@rdm6@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm5@}) - F({@rdm6@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm5,v,pq)@} - [{@subst(rdm6,v,pq)@}] \\
    &\displaystyle =&\displaystyle  {@subst(rdm5,v,pq)-subst(rdm6,v,pq)@}.
- \end{array}\]
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-b.xml
index 42c2630eb..864598666 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-2-b.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following definite integral:
 \[ \int^{@rdm5@}_{@rdm6@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions.
@@ -44,8 +43,7 @@ Then,
   \int^{@rdm5@}_{@rdm6@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm5@}) - F({@rdm6@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm5,v,pq)@} - [{@subst(rdm6,v,pq)@}] \\
    &\displaystyle =&\displaystyle  {@subst(rdm5,v,pq)-subst(rdm6,v,pq)@}
- \end{array}\] 
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-a.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-a.xml
index c14b37983..4995931db 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-a.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-a.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following integral:
 \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -37,7 +36,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm2@} \int {@ppp1@} d{@v@} + {@rdm2@} \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm2*int(ppp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-b.xml
index 56e4ddccf..7353bd4af 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-b.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following integral:
 \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -37,7 +36,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm2@} \int {@ppp1@} d{@v@} + {@rdm2@} \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm2*int(ppp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-c.xml
index 031ad63da..95c8adf55 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-3-c.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following integral:
 \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -37,7 +36,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm2@} \int {@ppp1@} d{@v@} + {@rdm2@} \int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm2*int(ppp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-b.xml
index dc5178d70..54bd8df22 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-b.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following definite integral:
 \[ \int^{@rdm4@}_{@rdm5@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -39,8 +38,7 @@ Then,
   \int^{@rdm4@}_{@rdm5@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm4@}) - F({@rdm5@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm4,v,pq)@} - \left[{@subst(rdm5,v,pq)@}\right] \\
    &\displaystyle =&\displaystyle  {@subst(rdm4,v,pq)-subst(rdm5,v,pq)@}
- \end{array}\] 
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-c.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-c.xml
index 12b988010..5278442fd 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-c.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-4-c.xml
@@ -8,8 +8,7 @@
       <text>By expressing the integrand as the sum of its partial fractions, find the following definite integral:
 \[ \int^{@rdm4@}_{@rdm5@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -33,8 +32,7 @@ Then,
   \int^{@rdm4@}_{@rdm5@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm4@}) - F({@rdm5@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm4,v,pq)@} - \left[{@subst(rdm5,v,pq)@}\right] \\
    &\displaystyle =&\displaystyle  {@subst(rdm4,v,pq)-subst(rdm5,v,pq)@}
- \end{array}\] 
-]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-5.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-5.xml
index fecbce3fe..a1a23503c 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-5.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-5.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -36,7 +35,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm3@} \int {@ppp1@} d{@v@} + {@rdm3@} \int {@ppp2@} d{@v@} + {@rdm3@} \int {@ppp3@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm2*int(ppp2,v)@} + {@rdm3*int(ppp3,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm2*int(ppp2,v)+rdm3*int(ppp3,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-6.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-6.xml
index d26937caa..ede775a56 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-6.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-6.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -36,7 +35,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm4@} \int {@ppp1@} d{@v@} + {@rdm5@} \int {@ppp2@} d{@v@} + {@rdm6@} \int {@ppp3@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)@} + {@rdm5*int(ppp2,v)@} + {@rdm6*int(ppp3,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)+rdm5*int(ppp2,v)+rdm6*int(ppp3,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-7.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-7.xml
index a2cc4dcb6..82d83cabe 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-7.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-7.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -36,7 +35,7 @@ Hence,
    &\displaystyle =&\displaystyle  {@rdm4@} \int {@ppp1@} d{@v@} + {@rdm5@} \int {@ppp2@} d{@v@} + {@rdm6@} \int {@ppp3@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)@} + {@rdm5*int(ppp2,v)@} + {@rdm6*int(ppp3,v)@} +c \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)+rdm5*int(ppp2,v)+rdm6*int(ppp3,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-8.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-8.xml
index 641ce4f5c..e69158fe4 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-8.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-8.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \] Note that the degree of the numerator is greater then the degree of the denominator.
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Since the degree of the numerator is greater than the degree of the denominator we need to use long division the get a simpler form to express \[{@p@}.\] <hint>alg_partial_fractions</hint>
@@ -37,7 +36,7 @@ So,
    &\displaystyle =&\displaystyle  {@rdm4@} \int {@ppp1@} d{@v@} + {@rdm5@} \int {@ppp2@} d{@v@} + \int ({@pp3@}) d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)@} + {@rdm5*int(ppp2,v)@} + {@int(pp3,v)@}+c \\
    &\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)+rdm5*int(ppp2,v)+int(pp3,v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-9.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-9.xml
index 3e73fd6fc..866cdc7ba 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-9.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_15/CR-Int-15-partialfrac-9.xml
@@ -28,7 +28,7 @@ So,
    &\displaystyle =&\displaystyle  {@rdm2@} \int {@ppp1@} d{@v@} + {@rdm4@} \int {@ppp2@} d{@v@} + {@rdm3@} \int \left({@ppp3@}\right) d{@v@} + \int {@pp4@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)@} + {@rdm4*int(ppp2,v)@} + {@rdm3*int(ppp3,v)@}+ {@int(pp4,v)@} + c \\
    &\displaystyle =&\displaystyle  {@rdm2*int(ppp1,v)+rdm4*int(ppp2,v)+rdm3*int(ppp3,v)+int(pp4,v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-1-b.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-1-b.xml
index b44076e1e..0d559ea47 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-1-b.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-1-b.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text>\[ \int {@p@} d{@v@} = {@int(p,v)@}+c\]</text>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-3.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-3.xml
index ee0728028..07f73d2f6 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-3.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_16/CR-Int-16-trigonometric-3.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Use the identity \[\sin(A)\cos(A)=\frac{\sin(2A)}{2}\] to find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Since \[{@p@} = {@q@}\] it follows that
@@ -16,7 +15,7 @@
 \[\begin{array}{rcl}\displaystyle 
  \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(q,v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-03.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-03.xml
index fb082988f..bd86bcc84 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-03.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-03.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[This problem can be solved using integration by parts.
@@ -25,7 +24,7 @@ So,
    &\displaystyle =&\displaystyle  {@pp2@}{@int(pp1,v)@} - \int {@int(pp1,v)@}{@diff(pp2,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp2*int(pp1,v)@} - \int {@int(pp1,v)*diff(pp2,v)@}d{@v@} \\
    &\displaystyle =&\displaystyle  {@pp2*int(pp1,v)@} - {@int(int(pp1,v)*diff(pp2,v),v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-04.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-04.xml
index 2ba8a92c5..9085e307f 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-04.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-04.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[By linearity <hint>calc_int_linearity_rule</hint>:
@@ -17,7 +16,7 @@
    &\displaystyle =&\displaystyle  {@rdm1@}\int {@ppp1@} d{@v@} + {@rdm3@}\int {@ppp2@} d{@v@} + \int {@pp3@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@rdm1*int(ppp1,v)@} + {@rdm3*int(ppp2,v)@} + {@int(pp3,v)@} +c \\
    &\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-05.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-05.xml
index 8489a5ccf..72cd99a92 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-05.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-05.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[By linearity <hint>calc_int_linearity_rule</hint>: 
@@ -17,7 +16,7 @@
    &\displaystyle =&\displaystyle  \int {@pp1@} d{@v@} + {@rdm2@}\int {@ppp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(pp1,v)@} + {@rdm2*int(ppp2,v)@} +c \\
    &\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-06.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-06.xml
index 4dd6439c6..40378dd87 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-06.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-06.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>By taking logarithms to the base \(e\) establish that \(a^x\) can be written as \(e^{xlna}\). Hence find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Using the laws of logarithms \[e^{ln(x)} = x\] and \[ln(x^k) = kln(x)\] we get that
@@ -23,7 +22,7 @@ So,
 \[\begin{array}{rcl}\displaystyle 
  \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int e^{x\cdot ln(a)} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(p,v)+c@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-08.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-08.xml
index 6cba78325..31d92e3cf 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-08.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-08.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -33,7 +32,7 @@ Hence,
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\
    &\displaystyle =&\displaystyle  \int {@pp1@} d{@v@} + \int {@pp2@} d{@v@} \\
    &\displaystyle =&\displaystyle  {@int(pp1,v)+int(pp2,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-09.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-09.xml
index 511b41468..7dac9b5de 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-09.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-09.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[If \(u\) and \(v\) are both functions of \(x\) then 
@@ -29,8 +28,7 @@ Hence,
 
 And so,
 
-\[\int {@p@} d{@v@} = \frac{@pp1*int(pp2,v)@}{2}+ \frac{c}{2}.\]
-]]></text>
+\[\int {@p@} d{@v@} = \frac{@pp1*int(pp2,v)@}{2}+ \frac{c}{2}.\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-10.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-10.xml
index e32e6925f..97f9f4156 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-10.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-10.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[To solve this problem we will have to express {@p@} in a simpler way using some trigonometric identities <hint>trig_standard_identities</hint>
@@ -46,7 +45,7 @@ Then
 \int^{@rdm1@}_{@rdm2@} {@p@} d{@v@} &\displaystyle =&\displaystyle  F({@rdm1@}) - F({@rdm2@}) \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q)@} - \left[{@subst(rdm2,v,q)@}\right] \\
    &\displaystyle =&\displaystyle  {@subst(rdm1,v,q)-subst(rdm2,v,q)@}
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-12.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-12.xml
index e9ba630a0..001fd4e90 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-12.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-12.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to solve this problem we will have to use the method of integration by parts <hint>calc_int_methods_parts</hint> as follows:
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-13.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-13.xml
index f93abfd68..ee810718e 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-13.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-13.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[In order to calculate \[\int {@p@} d{@v@}\] we need to express \[{@p@}\] as the sum of its partial fractions <hint>alg_partial_fractions</hint>.
@@ -31,7 +30,7 @@ Hence,
 
 \[\begin{array}{rcl}\displaystyle  
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\&\displaystyle =&\displaystyle  {@rdm4@} \int {@ppp1@} d{@v@} + {@rdm5@} \int {@ppp2@} d{@v@} + {@rdm6@} \int {@ppp3@} d{@v@} \\&\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)@} + {@rdm5*int(ppp2,v)@} + {@rdm6*int(ppp3,v)@} +c \\&\displaystyle =&\displaystyle  {@rdm4*int(ppp1,v)+rdm5*int(ppp2,v)+rdm6*int(ppp3,v)@} +c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-14.xml b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-14.xml
index fa35afaf5..7960254c8 100644
--- a/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-14.xml
+++ b/samplequestions/stacklibrary/Calculus-Refresher/CR_Int_17/CR-Int-17-misc-14.xml
@@ -7,8 +7,7 @@
     <questiontext format="html">
       <text>Find \[ \int {@p@} d{@v@}. \]
 
-[[input:ans1]] [[validation:ans1]]
-</text>
+[[input:ans1]] [[validation:ans1]]</text>
     </questiontext>
     <generalfeedback format="html">
       <text><![CDATA[Since the degree of the numerator is greater than the degree of the denominator we need to use long division to get a simpler form to express \[{@p@}.\] <hint>alg_partial_fractions</hint>
@@ -34,7 +33,7 @@ So,
 
 \[\begin{array}{rcl}\displaystyle  
 \int {@p@} d{@v@} &\displaystyle =&\displaystyle  \int {@q@} d{@v@} \\&\displaystyle =&\displaystyle  {@rdm3@} \int {@ppp1@} d{@v@} + {@rdm4@} \int {@ppp2@} d{@v@} + \int ({@pp3@}) d{@v@} \\&\displaystyle =&\displaystyle  {@rdm3*int(ppp1,v)@} + {@rdm4*int(ppp2,v)@} + {@int(pp3,v)@}+c \\&\displaystyle =&\displaystyle  {@rdm3*int(ppp1,v)+rdm4*int(ppp2,v)+int(pp3,v)@}+c
- \end{array}\] ]]></text>
+ \end{array}\]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
diff --git a/samplequestions/stacklibrary/Doc-Examples/D-L-distance.xml b/samplequestions/stacklibrary/Doc-Examples/D-L-distance.xml
index 81ed88825..e2f3ad5dd 100644
--- a/samplequestions/stacklibrary/Doc-Examples/D-L-distance.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/D-L-distance.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12706  -->
   <question type="stack">
     <name>
       <text>D-L distance</text>
@@ -10,12 +9,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -32,7 +31,7 @@ ta:first(allow1);]]></text>
       <text>[[feedback:prt1]]</text>
     </specificfeedback>
     <questionnote format="html">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="html">
       <text>The purpose of this question is to illustrate using string match and the Levenshtein distance. This is the question outlined in the `Levenshtein distance` page of mathematical topics in the documentation. This can be found on your server at `[YOUR SERVER ADDRESS]/question/type/stack/doc/doc.php/Topics/Levenshtein_distance.md` .</text>
@@ -57,7 +56,7 @@ ta:first(allow1);]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>string</type>
@@ -65,16 +64,16 @@ ta:first(allow1);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -82,7 +81,7 @@ ta:first(allow1);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -94,19 +93,19 @@ ta:first(allow1);]]></text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -126,7 +125,7 @@ ta:first(allow1);]]></text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value><![CDATA["Complete the square"]]></value>
@@ -140,7 +139,7 @@ ta:first(allow1);]]></text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value><![CDATA["completed square"]]></value>
@@ -154,7 +153,7 @@ ta:first(allow1);]]></text>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value><![CDATA["sdfghjkyu ytrtedsfx"]]></value>
@@ -168,7 +167,7 @@ ta:first(allow1);]]></text>
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value><![CDATA["Factoring"]]></value>
@@ -176,10 +175,9 @@ ta:first(allow1);]]></text>
       <expected>
         <name>prt1</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt1-1-F</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-1-grouping.xml b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-1-grouping.xml
index 1d6e1acd5..352fd9a12 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-1-grouping.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-1-grouping.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12721  -->
   <question type="stack">
     <name>
       <text>Drag and drop - 1 - grouping example</text>
@@ -18,12 +17,12 @@ Drag the functions to their appropriate category. </p>
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -93,7 +92,7 @@ wa: [
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -101,16 +100,16 @@ wa: [
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -124,27 +123,27 @@ tans: match_column_set(ta);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sans</sans>
         <tans>tans</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -168,7 +167,7 @@ tans: match_column_set(ta);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value> 	apply(group_answer,[wa, steps])</value>
@@ -181,5 +180,4 @@ tans: match_column_set(ta);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-2-Grid.xml b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-2-Grid.xml
index d7626c76f..03652736d 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-2-Grid.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-2-Grid.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12718  -->
   <question type="stack">
     <name>
       <text>Drag and drop -2- Grid</text>
@@ -16,12 +15,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -96,7 +95,7 @@ wa: [
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -104,16 +103,16 @@ wa: [
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -127,27 +126,27 @@ tans: match_set_row(ta);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sans</sans>
         <tans>tans</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -186,7 +185,7 @@ tans: match_set_row(ta);</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>apply(match_answer,[ta2, steps, 3])</value>
@@ -199,5 +198,4 @@ tans: match_set_row(ta);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-3-Grid_with_index.xml b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-3-Grid_with_index.xml
index 25a53e39c..6a8429892 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-3-Grid_with_index.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-3-Grid_with_index.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12723  -->
   <question type="stack">
     <name>
       <text>Drag and drop - 3 - Grid with index</text>
@@ -17,12 +16,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -95,7 +94,7 @@ wa: [
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -103,16 +102,16 @@ wa: [
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -124,27 +123,27 @@ wa: [
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sans</sans>
         <tans>ta</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -182,5 +181,4 @@ wa: [
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-4-Using-images.xml b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-4-Using-images.xml
index 218de6c84..ab533783e 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-4-Using-images.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Drag_and_drop-4-Using-images.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12728  -->
   <question type="stack">
     <name>
       <text>Drag and drop - 4 - Using images</text>
@@ -16,12 +15,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -57,9 +56,7 @@ ta: [
   ["f", "g"], 
   ["dfdx", "dgdx"], 
   ["df2d2x", "dg2d2x"]
-];
-
-]]></text>
+];]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
@@ -90,7 +87,7 @@ ta: [
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -98,10 +95,10 @@ ta: [
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -121,27 +118,27 @@ tans: match_set_row(ta);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sans</sans>
         <tans>tans</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -166,7 +163,7 @@ tans: match_set_row(ta);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value> 	apply(match_answer,[wa, steps, 3])</value>
@@ -179,5 +176,4 @@ tans: match_set_row(ta);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/GeoGebra.xml b/samplequestions/stacklibrary/Doc-Examples/GeoGebra.xml
index 91df6a159..ed94b65c1 100644
--- a/samplequestions/stacklibrary/Doc-Examples/GeoGebra.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/GeoGebra.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12654  -->
   <question type="stack">
     <name>
       <text>GeoGebra - 1 - minimal question</text>
@@ -14,12 +13,12 @@
 <span hidden="">[[input:ans1]][[validation:ans1]] [[input:remember]][[validation:remember]]</span>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -59,7 +58,7 @@ ta:-1/m;</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -67,10 +66,10 @@ ta:-1/m;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>0</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -85,10 +84,10 @@ ta:-1/m;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -102,11 +101,11 @@ ta:-1/m;</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>NumAbsolute</answertest>
         <sans>ans1*m</sans>
         <tans>-1</tans>
@@ -114,19 +113,19 @@ ta:-1/m;</text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -156,14 +155,14 @@ ta:-1/m;</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>1/m</value>
       </testinput>
       <testinput>
         <name>remember</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -173,5 +172,4 @@ ta:-1/m;</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Parsons-1-minimal.xml b/samplequestions/stacklibrary/Doc-Examples/Parsons-1-minimal.xml
index b2b33f9a3..85299882e 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Parsons-1-minimal.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Parsons-1-minimal.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12731  -->
   <question type="stack">
     <name>
       <text>Parsons proofs 1- Minimal</text>
@@ -13,12 +12,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -43,8 +42,7 @@ proof_steps: [
 proof_steps: random_permutation(proof_steps);
 
 /*a correct order, edit if changing question*/
-ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "alg_int", "contra", "conc");
-]]></text>
+ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "alg_int", "contra", "conc");]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
@@ -75,7 +73,7 @@ ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "al
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -83,16 +81,16 @@ ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "al
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -109,19 +107,19 @@ ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "al
         <answertest>AlgEquiv</answertest>
         <sans>pd</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -158,10 +156,9 @@ ta: proof("assume", "defn_rat", "defn_rat2", "defn_log", "defn_log2", "alg", "al
       <expected>
         <name>prt1</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt1-1-F</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Parsons-2-Interchangable-order.xml b/samplequestions/stacklibrary/Doc-Examples/Parsons-2-Interchangable-order.xml
index 24ac39863..f4d35523a 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Parsons-2-Interchangable-order.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Parsons-2-Interchangable-order.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12734  -->
   <question type="stack">
     <name>
       <text>parsons proof 2-Interchangable order</text>
@@ -25,7 +24,7 @@ Can you see the differences between these proofs?]]></text>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -94,7 +93,7 @@ tas: setify(map(proof_flatten, tal));]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -102,16 +101,16 @@ tas: setify(map(proof_flatten, tal));]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -124,23 +123,23 @@ tas: setify(map(proof_flatten, tal));]]></text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>pd</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -170,7 +169,7 @@ tas: setify(map(proof_flatten, tal));]]></text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>apply(parsons_answer,[wa, proof_steps])</value>
@@ -183,5 +182,4 @@ tas: setify(map(proof_flatten, tal));]]></text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Doc-Examples/Parsons-3-builder.xml b/samplequestions/stacklibrary/Doc-Examples/Parsons-3-builder.xml
index e9d535d95..f067345b4 100644
--- a/samplequestions/stacklibrary/Doc-Examples/Parsons-3-builder.xml
+++ b/samplequestions/stacklibrary/Doc-Examples/Parsons-3-builder.xml
@@ -1,107 +1,106 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 691  -->
   <question type="stack">
     <name>
       <text>Parsons-feedback-builder</text>
     </name>
     <questiontext format="moodle_auto_format">
-      <text><![CDATA[Let \(\displaystyle s_n=\sum_{r=1}^n r^3\).  Prove by induction that \(s_n=n^2(n+1)^2/4\).
- [[parsons input="ans1"]]
-{# parsons_encode(proof_steps) #}
-[[/parsons ]]
-
+      <text><![CDATA[Let \(\displaystyle s_n=\sum_{r=1}^n r^3\).  Prove by induction that \(s_n=n^2(n+1)^2/4\).
+ [[parsons input="ans1"]]
+{# parsons_encode(proof_steps) #}
+[[/parsons ]]
+
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
     <questionvariables>
-      <text><![CDATA[stack_include("contribl://prooflib.mac");
-stack_include("contribl://builder.mac");
-
-/* The proof-steps are common to all prooflib.mac questions. */
-/* For builder questions, the teacher answer field is a list
- * of lists of the form [skey, phrase, pos] where
- * phrase and skey are strings, and pos is a nonnegative integer.
- */
-proof_steps: [
-    ["intro_P","Let \\(P(n)\\) be the statement that \\(s_n=n^2(n+1)^2/4\\).",1],
-    ["base","Statement \\(P(1)\\) says that \\(s_1=1^22^2/4=1\\).",2],
-    ["s_one","We also have \\(s_1=1^3=1\\), so \\(P(1)\\) is true.",3],
-    ["intro_k","Now suppose that \\(P(k)\\) holds for some \\(k\\).  We must show that \\(P(k+1)\\) also holds.",4],
-    ["s_next","From the definition of \\(s_n\\), we have \\(s_{k+1}=s_k+(k+1)^3\\).",5],
-    ["use_hyp",
-      sconcat(
-       "The induction hypothesis \\(P(k)\\) tells us that \\(s_k=k^2(k+1)^2/4\\), ",
-       "so we can rewrite this as \\(s_{k+1}=k^2(k+1)^2/4+(k+1)^3\\)."
-      ),6],
-    ["rearrange",
-     sconcat(
-      "We can now rearrange this as ",
-      "\\(s_{k+1}=\\frac{1}{4}(k+1)^2(k^2+4k+4)=\\frac{1}{4}(k+1)^2(k+2)^2\\), ",
-      "which means that \\(P(k+1)\\) holds, as required."
-     ),7],
-    ["conclude","We have now proved the base case \\(P(1)\\) and the induction step \\(P(k)\\Rightarrow P(k+1)\\), so \\(P(n)\\) holds for all \\(n\\) by induction",8]
-   ];
-/* We just create a "correct answer" from the steps above, as given. */
-ta:apply(proof,map(first, proof_steps));
-/* Create a wrong answer for testing. */
-wa1:apply(proof,map(first, rest(proof_steps)));
-
-
-/* The prules array below is used by the builder.mac feedback system. */
-prules : [
-    ["needs",["base","s_one","step_setup","use_hyp","rearrange","conclude"],"intro_P",
-     "You have used the symbol \\(P\\), but you have not defined it.  You need to explain what \\(P(n)\\) means."
-    ],
-    ["needs",["use_hyp"],"intro_k",
-     sconcat(
-      "You seem to be assuming that \\(P(k)\\) holds, but you have not ",
-      "explicitly stated or proved anything about that."
-     )
-    ],
-    ["needs",["s_next","use_hyp","rearrange"],"intro_k",builder_needs_intro("k")],
-    ["needs",["s_one"],"base",
-     "Why is \\(P(1)\\) true?  You need to spell out what \\(P(1)\\) says before you can prove it."
-    ],
-    ["needs_immediate",["use_hyp"],"s_next",
-     sconcat(
-      "You said: \"... so we can rewrite this ...\".  What is the statement that ",
-      "you want to rewrite?  On the line directly before this one, you need to ",
-      "have an equation involving \\(s_k\\), so that you can make the substitution ",
-      "\\(s_k=k\\cdot 2^k\\) in that equation."
-     )
-    ],
-    ["needs_immediate",["rearrange"],"use_hyp",
-     sconcat(
-      "You said: \"We can now rearrange this ...\".  What is the statement that ",
-      "you want to rearrange?  On the line directly before this one, you need to ",
-      "have an equation involving roughly the same ingredients as the desired ",
-      "equation \\(s_{k+1}=(k+1)2^{k+1}\\)."
-     )
-    ],
-    ["needs",["conclude"],"s_one",
-     "You say that you have proved the base case \\(P(1)\\), but in fact you have not."
-    ],
-    ["needs",["conclude"],"rearrange",
-     "You say that you have proved the induction step \\(P(k)\\Rightarrow P(k+1)\\), but in fact you have not."
-    ],
-    ["require",["conclude"],
-     "This is needed to complete the proof."
-    ]
-   ];
-
-/* Below just creates random order for displaying the steps. */
-proof_steps:random_permutation(proof_steps);
-/* The parsons input must have lists of length exactly two, so we strip out the 3rs element. */
+      <text><![CDATA[stack_include("contribl://prooflib.mac");
+stack_include("contribl://builder.mac");
+
+/* The proof-steps are common to all prooflib.mac questions. */
+/* For builder questions, the teacher answer field is a list
+ * of lists of the form [skey, phrase, pos] where
+ * phrase and skey are strings, and pos is a nonnegative integer.
+ */
+proof_steps: [
+    ["intro_P","Let \\(P(n)\\) be the statement that \\(s_n=n^2(n+1)^2/4\\).",1],
+    ["base","Statement \\(P(1)\\) says that \\(s_1=1^22^2/4=1\\).",2],
+    ["s_one","We also have \\(s_1=1^3=1\\), so \\(P(1)\\) is true.",3],
+    ["intro_k","Now suppose that \\(P(k)\\) holds for some \\(k\\).  We must show that \\(P(k+1)\\) also holds.",4],
+    ["s_next","From the definition of \\(s_n\\), we have \\(s_{k+1}=s_k+(k+1)^3\\).",5],
+    ["use_hyp",
+      sconcat(
+       "The induction hypothesis \\(P(k)\\) tells us that \\(s_k=k^2(k+1)^2/4\\), ",
+       "so we can rewrite this as \\(s_{k+1}=k^2(k+1)^2/4+(k+1)^3\\)."
+      ),6],
+    ["rearrange",
+     sconcat(
+      "We can now rearrange this as ",
+      "\\(s_{k+1}=\\frac{1}{4}(k+1)^2(k^2+4k+4)=\\frac{1}{4}(k+1)^2(k+2)^2\\), ",
+      "which means that \\(P(k+1)\\) holds, as required."
+     ),7],
+    ["conclude","We have now proved the base case \\(P(1)\\) and the induction step \\(P(k)\\Rightarrow P(k+1)\\), so \\(P(n)\\) holds for all \\(n\\) by induction",8]
+   ];
+/* We just create a "correct answer" from the steps above, as given. */
+ta:apply(proof,map(first, proof_steps));
+/* Create a wrong answer for testing. */
+wa1:apply(proof,map(first, rest(proof_steps)));
+
+
+/* The prules array below is used by the builder.mac feedback system. */
+prules : [
+    ["needs",["base","s_one","step_setup","use_hyp","rearrange","conclude"],"intro_P",
+     "You have used the symbol \\(P\\), but you have not defined it.  You need to explain what \\(P(n)\\) means."
+    ],
+    ["needs",["use_hyp"],"intro_k",
+     sconcat(
+      "You seem to be assuming that \\(P(k)\\) holds, but you have not ",
+      "explicitly stated or proved anything about that."
+     )
+    ],
+    ["needs",["s_next","use_hyp","rearrange"],"intro_k",builder_needs_intro("k")],
+    ["needs",["s_one"],"base",
+     "Why is \\(P(1)\\) true?  You need to spell out what \\(P(1)\\) says before you can prove it."
+    ],
+    ["needs_immediate",["use_hyp"],"s_next",
+     sconcat(
+      "You said: \"... so we can rewrite this ...\".  What is the statement that ",
+      "you want to rewrite?  On the line directly before this one, you need to ",
+      "have an equation involving \\(s_k\\), so that you can make the substitution ",
+      "\\(s_k=k\\cdot 2^k\\) in that equation."
+     )
+    ],
+    ["needs_immediate",["rearrange"],"use_hyp",
+     sconcat(
+      "You said: \"We can now rearrange this ...\".  What is the statement that ",
+      "you want to rearrange?  On the line directly before this one, you need to ",
+      "have an equation involving roughly the same ingredients as the desired ",
+      "equation \\(s_{k+1}=(k+1)2^{k+1}\\)."
+     )
+    ],
+    ["needs",["conclude"],"s_one",
+     "You say that you have proved the base case \\(P(1)\\), but in fact you have not."
+    ],
+    ["needs",["conclude"],"rearrange",
+     "You say that you have proved the induction step \\(P(k)\\Rightarrow P(k+1)\\), but in fact you have not."
+    ],
+    ["require",["conclude"],
+     "This is needed to complete the proof."
+    ]
+   ];
+
+/* Below just creates random order for displaying the steps. */
+proof_steps:random_permutation(proof_steps);
+/* The parsons input must have lists of length exactly two, so we strip out the 3rs element. */
 ps:map(lambda([ex],[first(ex),second(ex)]),proof_steps);]]></text>
     </questionvariables>
     <specificfeedback format="html">
@@ -111,10 +110,10 @@ ps:map(lambda([ex],[first(ex),second(ex)]),proof_steps);]]></text>
       <text>{#map(first,proof_steps)#}</text>
     </questionnote>
     <questiondescription format="html">
-      <text>This question illustrates a general framework for questions that ask the student to construct a proof by selecting phrases from a given list and arranging them in order.    
-
-The question author can specify various kinds of rules for generating feedback if the proof is invalid.    Most of the logic is in a Maxima file `builder.mac` in the contrib directory, 
-
+      <text>This question illustrates a general framework for questions that ask the student to construct a proof by selecting phrases from a given list and arranging them in order.    
+
+The question author can specify various kinds of rules for generating feedback if the proof is invalid.    Most of the logic is in a Maxima file `builder.mac` in the contrib directory, 
+
 The advantage is that teachers can mange meaningful feedback for individual steps, but of course that is more work than using the auto-generated feedback.  As illustrated in this question, the auto-generated feedback can sit alongside the bespoke feedback generated by the builder library.</text>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
@@ -137,7 +136,7 @@ The advantage is that teachers can mange meaningful feedback for individual step
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -145,16 +144,16 @@ The advantage is that teachers can mange meaningful feedback for individual step
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -162,33 +161,33 @@ The advantage is that teachers can mange meaningful feedback for individual step
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text>sa: parsons_decode(ans1);
-[pd, saa]:proof_assessment(sa, proof_alternatives(ta));
+        <text>sa: parsons_decode(ans1);
+[pd, saa]:proof_assessment(sa, proof_alternatives(ta));
 [sc,an,fb]:builder_check_rules(sa,proof_steps,prules);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>pd</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text>{@fb@}
+          <text>{@fb@}
 {@proof_assessment_display(saa, proof_steps)@}</text>
         </falsefeedback>
       </node>
@@ -227,5 +226,4 @@ The advantage is that teachers can mange meaningful feedback for individual step
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Features/MCQ-example-multiselqnalpha.xml b/samplequestions/stacklibrary/Features/MCQ-example-multiselqnalpha.xml
index c664cb2dd..b7ebeb7e8 100644
--- a/samplequestions/stacklibrary/Features/MCQ-example-multiselqnalpha.xml
+++ b/samplequestions/stacklibrary/Features/MCQ-example-multiselqnalpha.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12808  -->
   <question type="stack">
     <name>
       <text>MCQ_example_multiselqnalpha</text>
@@ -10,12 +9,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -58,7 +57,7 @@ corr1:mcq_correct(ta1);</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>checkbox</type>
@@ -66,16 +65,16 @@ corr1:mcq_correct(ta1);</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -83,31 +82,31 @@ corr1:mcq_correct(ta1);</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>Sets</answertest>
         <sans>setify(ans1)</sans>
         <tans>setify(corr1)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -133,7 +132,7 @@ corr1:mcq_correct(ta1);</text>
     <deployedseed>357901509</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>corr1</value>
@@ -147,7 +146,7 @@ corr1:mcq_correct(ta1);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[corr1[1]]</value>
@@ -160,5 +159,4 @@ corr1:mcq_correct(ta1);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Features/MCQ-example.xml b/samplequestions/stacklibrary/Features/MCQ-example.xml
index cd4105a90..45faa81c9 100644
--- a/samplequestions/stacklibrary/Features/MCQ-example.xml
+++ b/samplequestions/stacklibrary/Features/MCQ-example.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12805  -->
   <question type="stack">
     <name>
       <text>MCQ_example_Remainder Theorem T/F</text>
@@ -10,12 +9,12 @@
  [[input:ans1]] [[validation:ans1]]]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -43,9 +42,7 @@ statements:makelist([sconcat("(",ascii(96+i),")"),statements[i][1],statements[i]
 statements:maplist(lambda([ex],[ex[1],ex[2],sconcat("<b>",ex[1],"</b> ",ex[3])]),statements);
 /* Produce lists of correct and incorrect statements: */
 tans:mcq_correct(statements);
-incorr:maplist(first, sublist(statements, lambda([ex], not(second(ex)))));
-
-]]></text>
+incorr:maplist(first, sublist(statements, lambda([ex], not(second(ex)))));]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
@@ -77,7 +74,7 @@ The marking counts the number correct and the number incorrect.  You are then ab
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>checkbox</type>
@@ -85,16 +82,16 @@ The marking counts the number correct and the number incorrect.  You are then ab
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>1</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -108,8 +105,7 @@ The marking counts the number correct and the number incorrect.  You are then ab
   PRT score fields can be variables so, should you choose to, and use that value to assign a score.
 */
 
-nocorrect:cardinality(intersection(setify(tans),setify(ans1)));
-]]></text>
+nocorrect:cardinality(intersection(setify(tans),setify(ans1)));]]></text>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -117,7 +113,7 @@ nocorrect:cardinality(intersection(setify(tans),setify(ans1)));
         <answertest>Sets</answertest>
         <sans>setify(ans1)</sans>
         <tans>setify(tans)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
@@ -125,7 +121,7 @@ nocorrect:cardinality(intersection(setify(tans),setify(ans1)));
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-0-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -171,10 +167,9 @@ nocorrect:cardinality(intersection(setify(tans),setify(ans1)));
       <expected>
         <name>prt1</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt1-0-F</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Features/Reveal_block_example.xml b/samplequestions/stacklibrary/Features/Reveal_block_example.xml
index 7b8a37d78..5ea9bd0a0 100644
--- a/samplequestions/stacklibrary/Features/Reveal_block_example.xml
+++ b/samplequestions/stacklibrary/Features/Reveal_block_example.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 4564  -->
   <question type="stack">
     <name>
       <text>Subspace (reveal example)</text>
@@ -38,7 +37,7 @@ For example, \(w_1 = \) [[input:answ1]] [[validation:answ1]] is in \(W\) and
     <defaultgrade>3</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023051500</text>
     </stackversion>
@@ -67,13 +66,13 @@ taw1:transpose(matrix([null,null,null]));
 taw2:null;</text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
-    <questionnote>
+    <questionnote format="html">
       <text>{@Ws@}</text>
     </questionnote>
     <questiondescription format="html">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -87,13 +86,15 @@ taw2:null;</text>
     <prtincorrect format="html">
       <text><![CDATA[<span style="font-size: 1.5em; color:red;"><i class="fa fa-times"></i></span> Incorrect answer.]]></text>
     </prtincorrect>
+    <decimals>.</decimals>
+    <scientificnotation>*10</scientificnotation>
     <multiplicationsign>none</multiplicationsign>
     <sqrtsign>1</sqrtsign>
     <complexno>i</complexno>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans0</name>
       <type>boolean</type>
@@ -101,16 +102,16 @@ taw2:null;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans1</name>
@@ -119,16 +120,16 @@ taw2:null;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -137,16 +138,16 @@ taw2:null;</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -157,14 +158,14 @@ taw2:null;</text>
       <insertstars>5</insertstars>
       <syntaxhint>[?, ...]</syntaxhint>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv1</name>
@@ -173,16 +174,16 @@ taw2:null;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv2</name>
@@ -191,16 +192,16 @@ taw2:null;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>answ1</name>
@@ -209,16 +210,16 @@ taw2:null;</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>answ2</name>
@@ -227,16 +228,16 @@ taw2:null;</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -244,7 +245,7 @@ taw2:null;</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -252,11 +253,11 @@ taw2:null;</text>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>issubspace</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
@@ -264,7 +265,7 @@ taw2:null;</text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -283,19 +284,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -308,23 +309,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>deg</sans>
         <tans>1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt2-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -333,23 +334,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(ans2, matrix([0],[0],[0]))</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>3</truenextnode>
         <trueanswernote>prt2-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -358,27 +359,27 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>cspace(ans2)</sans>
         <tans>cspace(Ws)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-4-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-4-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -388,23 +389,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -417,15 +418,15 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans0</sans>
         <tans>not(point_in_space(Ws,matrix([0],[0],[0])))</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-2-T</trueanswernote>
         <truefeedback format="html">
@@ -433,7 +434,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -447,27 +448,27 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -476,23 +477,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(Ws,ansv1)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt4-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -501,23 +502,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(Ws,ansv2)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>3</truenextnode>
         <trueanswernote>prt4-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -526,15 +527,15 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(Ws,ansv1+ansv2)</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-4-T</trueanswernote>
         <truefeedback format="html">
@@ -542,7 +543,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-4-F</falseanswernote>
         <falsefeedback format="html">
@@ -556,27 +557,27 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt5-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -585,23 +586,23 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(Ws,answ1)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt5-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -610,15 +611,15 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>point_in_space(Ws,answ2*answ1)</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt5-3-T</trueanswernote>
         <truefeedback format="html">
@@ -626,7 +627,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -636,10 +637,10 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans1</name>
@@ -655,19 +656,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -683,29 +684,29 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans1</name>
@@ -721,19 +722,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -749,29 +750,29 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans1</name>
@@ -787,19 +788,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -810,31 +811,31 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       <expected>
         <name>prt2</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt2-4-F</expectedanswernote>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
         <value>true</value>
@@ -845,7 +846,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
@@ -853,19 +854,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -875,8 +876,8 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
@@ -887,20 +888,20 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
         <value>false</value>
@@ -911,7 +912,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
@@ -919,19 +920,19 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -941,8 +942,8 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
@@ -954,10 +955,10 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
     </qtest>
     <qtest>
       <testcase>6</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans1</name>
@@ -965,7 +966,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
@@ -995,14 +996,14 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
@@ -1031,7 +1032,7 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
@@ -1039,51 +1040,50 @@ deg:apply(max, maplist(lambda([ex], hipow(ans2, ex)), lv));</text>
       </testinput>
       <testinput>
         <name>ansv1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt1-1-F</expectedanswernote>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt3</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt3-2-F</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Features/Scientific-units.xml b/samplequestions/stacklibrary/Features/Scientific-units.xml
index 5bd188f9b..e1822ef0e 100644
--- a/samplequestions/stacklibrary/Features/Scientific-units.xml
+++ b/samplequestions/stacklibrary/Features/Scientific-units.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12693  -->
   <question type="stack">
     <name>
       <text>Scientific units</text>
@@ -10,12 +9,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -62,7 +61,7 @@ uw2: stackunits((len*width)/100,m^2);</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>units</type>
@@ -70,10 +69,10 @@ uw2: stackunits((len*width)/100,m^2);</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>0</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -87,11 +86,11 @@ uw2: stackunits((len*width)/100,m^2);</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>UnitsStrictAbsolute</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
@@ -99,24 +98,24 @@ uw2: stackunits((len*width)/100,m^2);</text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>UnitsAbsolute</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
@@ -124,7 +123,7 @@ uw2: stackunits((len*width)/100,m^2);</text>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -132,16 +131,16 @@ uw2: stackunits((len*width)/100,m^2);</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>UnitsAbsolute</answertest>
         <sans>ans1</sans>
         <tans>uw2</tans>
@@ -149,7 +148,7 @@ uw2: stackunits((len*width)/100,m^2);</text>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
@@ -157,11 +156,11 @@ uw2: stackunits((len*width)/100,m^2);</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -189,7 +188,7 @@ uw2: stackunits((len*width)/100,m^2);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>uw2</value>
@@ -203,7 +202,7 @@ uw2: stackunits((len*width)/100,m^2);</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>uw1</value>
@@ -216,5 +215,4 @@ uw2: stackunits((len*width)/100,m^2);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/General-maths-questions/First-Order-ODE/Differential_Equation_3.xml b/samplequestions/stacklibrary/General-maths-questions/First-Order-ODE/Differential_Equation_3.xml
index 2bd9aae26..db49466b8 100644
--- a/samplequestions/stacklibrary/General-maths-questions/First-Order-ODE/Differential_Equation_3.xml
+++ b/samplequestions/stacklibrary/General-maths-questions/First-Order-ODE/Differential_Equation_3.xml
@@ -25,8 +25,7 @@ correctanswer2:sqrt(n1)*tanh(sqrt(n1)*(n2*x+x^3/3)+c);
 wronganswer1:sqrt(n1)*tanh(sqrt(n1)*(n2*x+x^3/3+p));
 wronganswer2:sqrt(n1)*tanh(sqrt(n1)*(n2*x+x^3/3));
 wronganswer3:rat(exponentialize(correctanswer));
-wronganswer4:sqrt(n1)*tanh(sqrt(n1)*(n2*x+x^3/3)+p);
-</text>
+wronganswer4:sqrt(n1)*tanh(sqrt(n1)*(n2*x+x^3/3)+p);</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<p>[[feedback:Result]]</p>]]></text>
diff --git a/samplequestions/stacklibrary/Topics/Complex_cube_roots.xml b/samplequestions/stacklibrary/Topics/Complex_cube_roots.xml
index c101d7873..30b0e6c2d 100644
--- a/samplequestions/stacklibrary/Topics/Complex_cube_roots.xml
+++ b/samplequestions/stacklibrary/Topics/Complex_cube_roots.xml
@@ -1,158 +1,157 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12793  -->
   <question type="stack">
     <name>
       <text>Complex roots/unsorted multi-input answers</text>
     </name>
     <questiontext format="html">
-      <text><![CDATA[<p>
-a) Convert the number \(z={@z@}\) to polar coordinates, i.e. write the number as \(z = r\, e^{\mathrm i\, \theta} = r\, \exp(\mathrm i\, \theta)\). The argument \(\theta\) should be given in radians and as the principal value, i.e. \(-\pi &lt; \theta \le \pi\).
-</p>
-<p>
-b) Find the three different roots \(u_1\), \(u_2\) or \(u_3\) of \(z\), where. \(u_1^3 = u_2^3 = u_3^3 = z\), but \(u_1 \neq u_2\), \(u_2 \neq u_3\), \(u_3 \neq u_1\).
-</p>
-<p>
-<strong>Answers:</strong> Give all answers exactly! The answers in b) must also be given in polar form.
- The easiest way to enter the exponential function is as <code>exp()</code>.
-</p>
-<p>
-Example: \(\dfrac{6}{5}\, \exp\left(\dfrac{\mathrm i\, \pi}{7}\right) = \dfrac{6}{5}\, e^{\frac{\mathrm i\, \pi}{7}}\) is entered as <code>(6/5)*exp(%i*%pi/7)</code>.
-</p>
-
-<table>
-    <tbody>
-        <tr>
-            <td>a)</td>
-            <td>\(z =~\)[[input:SAns1]]\(\, \exp(\)[[input:SAns2]]\(\, \mathrm{i})\)</td>
-        </tr>
-        <tr>
-            <td></td>
-            <td>[[validation:SAns1]]</td>
-            <td>[[validation:SAns2]]</td>
-        </tr>
-    </tbody>
-</table>
-
-<table>
-    <tbody>
-        <tr>
-            <td>b)</td>
-            <td>\(u_1 =~\)[[input:SAns3]]</td>
-            <td>[[validation:SAns3]] [[feedback:prt3]]</td>
-        </tr>
-        <tr>
-            <td></td>
-            <td>\(u_2 =~\)[[input:SAns4]]</td>
-            <td>[[validation:SAns4]] [[feedback:prt4]]</td>
-        </tr>
-        <tr>
-            <td></td>
-            <td>\(u_3 =~\)[[input:SAns5]]</td>
-            <td>[[validation:SAns5]][[feedback:prt5]]</td>
-        </tr>
-    </tbody>
+      <text><![CDATA[<p>
+a) Convert the number \(z={@z@}\) to polar coordinates, i.e. write the number as \(z = r\, e^{\mathrm i\, \theta} = r\, \exp(\mathrm i\, \theta)\). The argument \(\theta\) should be given in radians and as the principal value, i.e. \(-\pi &lt; \theta \le \pi\).
+</p>
+<p>
+b) Find the three different roots \(u_1\), \(u_2\) or \(u_3\) of \(z\), where. \(u_1^3 = u_2^3 = u_3^3 = z\), but \(u_1 \neq u_2\), \(u_2 \neq u_3\), \(u_3 \neq u_1\).
+</p>
+<p>
+<strong>Answers:</strong> Give all answers exactly! The answers in b) must also be given in polar form.
+ The easiest way to enter the exponential function is as <code>exp()</code>.
+</p>
+<p>
+Example: \(\dfrac{6}{5}\, \exp\left(\dfrac{\mathrm i\, \pi}{7}\right) = \dfrac{6}{5}\, e^{\frac{\mathrm i\, \pi}{7}}\) is entered as <code>(6/5)*exp(%i*%pi/7)</code>.
+</p>
+
+<table>
+    <tbody>
+        <tr>
+            <td>a)</td>
+            <td>\(z =~\)[[input:SAns1]]\(\, \exp(\)[[input:SAns2]]\(\, \mathrm{i})\)</td>
+        </tr>
+        <tr>
+            <td></td>
+            <td>[[validation:SAns1]]</td>
+            <td>[[validation:SAns2]]</td>
+        </tr>
+    </tbody>
+</table>
+
+<table>
+    <tbody>
+        <tr>
+            <td>b)</td>
+            <td>\(u_1 =~\)[[input:SAns3]]</td>
+            <td>[[validation:SAns3]] [[feedback:prt3]]</td>
+        </tr>
+        <tr>
+            <td></td>
+            <td>\(u_2 =~\)[[input:SAns4]]</td>
+            <td>[[validation:SAns4]] [[feedback:prt4]]</td>
+        </tr>
+        <tr>
+            <td></td>
+            <td>\(u_3 =~\)[[input:SAns5]]</td>
+            <td>[[validation:SAns5]][[feedback:prt5]]</td>
+        </tr>
+    </tbody>
 </table>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text><![CDATA[<p>a) When a complex number is expressed in polar form, \(r\) is the distance from the origin, which is the same as 
-\[\lvert z \rvert=\sqrt{0^2+\left({@radius@}\right)^2}={@radius@}.\]
-</p>
-
-<p>The argument \(\theta\) is given by the angle between the positive real axis and the vector from the origin to \(z\), with the requirement \(-\pi &lt; \theta \leq \pi\). 
-We can immediately see from the sign of \(z\) that \(\theta = \displaystyle {@arg_z@}\), since the real part is \(0\).</p>
-<p>Now we can write \(z\) in polar form: \[z = {@radius@} \, e^{ {@arg_z@} \, \mathrm i }\]</p>
-
-<p>b) Using the following formula, we can then calculate the complex \(n\):th roots:</p>
-<p>\[\sqrt[n]{z} = \sqrt[n]{r} \,\exp\left( \mathrm i\,\frac{\theta + 2k\pi}{n}\right), \quad k = 0, 1, \dots , n-1.\]</p>
-
-<p>With \(k=0\) we get
-\[\begin{split} u_1 &amp;= \sqrt[3]{{@radius@}} \exp\left( \mathrm i\, \frac{{@arg_z@}}{3} \right) \\ 
-&amp;= {@polarform_simp(u1)@}.
-\end{split}\]</p>
-
-<p>Similarly with \(k=1\) we get
-\[\begin{split} u_2 &amp;= \sqrt[3]{{@radius@}} \exp \left( \mathrm i\, \frac{{@arg_z@} + 2\pi}{3}\right) \\
-&amp;= {@polarform_simp(u2)@},
-\end{split}\]
-</p>
-<p>and with \(k=2\):
-\[\begin{split} u_3 &amp;= \sqrt[3]{{@radius@}}\exp \left( \mathrm i \, \frac{{@arg_z@} + 4\pi}{3}\right) \\
-&amp;= {@polarform_simp(u3)@}.
+      <text><![CDATA[<p>a) When a complex number is expressed in polar form, \(r\) is the distance from the origin, which is the same as 
+\[\lvert z \rvert=\sqrt{0^2+\left({@radius@}\right)^2}={@radius@}.\]
+</p>
+
+<p>The argument \(\theta\) is given by the angle between the positive real axis and the vector from the origin to \(z\), with the requirement \(-\pi &lt; \theta \leq \pi\). 
+We can immediately see from the sign of \(z\) that \(\theta = \displaystyle {@arg_z@}\), since the real part is \(0\).</p>
+<p>Now we can write \(z\) in polar form: \[z = {@radius@} \, e^{ {@arg_z@} \, \mathrm i }\]</p>
+
+<p>b) Using the following formula, we can then calculate the complex \(n\):th roots:</p>
+<p>\[\sqrt[n]{z} = \sqrt[n]{r} \,\exp\left( \mathrm i\,\frac{\theta + 2k\pi}{n}\right), \quad k = 0, 1, \dots , n-1.\]</p>
+
+<p>With \(k=0\) we get
+\[\begin{split} u_1 &amp;= \sqrt[3]{{@radius@}} \exp\left( \mathrm i\, \frac{{@arg_z@}}{3} \right) \\ 
+&amp;= {@polarform_simp(u1)@}.
+\end{split}\]</p>
+
+<p>Similarly with \(k=1\) we get
+\[\begin{split} u_2 &amp;= \sqrt[3]{{@radius@}} \exp \left( \mathrm i\, \frac{{@arg_z@} + 2\pi}{3}\right) \\
+&amp;= {@polarform_simp(u2)@},
+\end{split}\]
+</p>
+<p>and with \(k=2\):
+\[\begin{split} u_3 &amp;= \sqrt[3]{{@radius@}}\exp \left( \mathrm i \, \frac{{@arg_z@} + 4\pi}{3}\right) \\
+&amp;= {@polarform_simp(u3)@}.
 \end{split}\]</p>]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
     <questionvariables>
-      <text>numerator : rand([2,3,5,7,11,13]);
-denominator : rand_with_prohib(2,13, [numerator, numerator*2, numerator*3]);
-radius: ev((numerator/denominator)^3,simp);
-arg_z: rand([-pi/2, pi/2]);
-zPar: radius*exp(arg_z*%i);
-polar_z: polarform(zPar);
-z:ev(zPar,simp);
-
-arg1: arg_z/3;
-arg2: arg1+(1*2*pi/3);
-arg3: arg1+(2*2*pi/3);
-
-u1: ev(radius^(1/3)*exp(arg1*%i),simp);
-u2: ev(radius^(1/3)*exp(arg2*%i),simp);
-u3: ev(radius^(1/3)*exp(arg3*%i),simp);
-
-/* Kuvaa varten muuttujia: */
-xmin: -radius*1.5; 
-ymin: xmin;
-xmax: radius*1.5; 
-ymax: xmax;
-r:radius;
-xangle_startp: ev(r/2,simp);
-yangle_endp: ev(imagpart(z)/2,simp);
-
-startx : if (arg_z = pi/2) then radius/2 else 0;
-starty : if (arg_z = pi/2) then 0 else imagpart(zPar)/2;
-endx : if (arg_z = pi/2) then 0 else radius/2;
-endy : if (arg_z = pi/2) then imagpart(zPar)/2 else 0;
-
-Tans1 : radius;
-Tans2 : arg_z;
-Tans3 : polarform_simp(u1);
-Tans4 : polarform_simp(u2);
-Tans5 : polarform_simp(u3);
-
-Twrong1 : ev(radius/3,simp);
-Twrong2 : ev(arg_z*2,simp);
-/* Not a root. */
-Twrong3 : polarform_simp(Tans3*2);
-/* A root, but not the right form. */
-Twrong4 : ev(ratsimp(Tans4),simp);
-/* Both properties wrong! */
+      <text>numerator : rand([2,3,5,7,11,13]);
+denominator : rand_with_prohib(2,13, [numerator, numerator*2, numerator*3]);
+radius: ev((numerator/denominator)^3,simp);
+arg_z: rand([-pi/2, pi/2]);
+zPar: radius*exp(arg_z*%i);
+polar_z: polarform(zPar);
+z:ev(zPar,simp);
+
+arg1: arg_z/3;
+arg2: arg1+(1*2*pi/3);
+arg3: arg1+(2*2*pi/3);
+
+u1: ev(radius^(1/3)*exp(arg1*%i),simp);
+u2: ev(radius^(1/3)*exp(arg2*%i),simp);
+u3: ev(radius^(1/3)*exp(arg3*%i),simp);
+
+/* Kuvaa varten muuttujia: */
+xmin: -radius*1.5; 
+ymin: xmin;
+xmax: radius*1.5; 
+ymax: xmax;
+r:radius;
+xangle_startp: ev(r/2,simp);
+yangle_endp: ev(imagpart(z)/2,simp);
+
+startx : if (arg_z = pi/2) then radius/2 else 0;
+starty : if (arg_z = pi/2) then 0 else imagpart(zPar)/2;
+endx : if (arg_z = pi/2) then 0 else radius/2;
+endy : if (arg_z = pi/2) then imagpart(zPar)/2 else 0;
+
+Tans1 : radius;
+Tans2 : arg_z;
+Tans3 : polarform_simp(u1);
+Tans4 : polarform_simp(u2);
+Tans5 : polarform_simp(u3);
+
+Twrong1 : ev(radius/3,simp);
+Twrong2 : ev(arg_z*2,simp);
+/* Not a root. */
+Twrong3 : polarform_simp(Tans3*2);
+/* A root, but not the right form. */
+Twrong4 : ev(ratsimp(Tans4),simp);
+/* Both properties wrong! */
 Twrong5 : Tans5*4;</text>
     </questionvariables>
     <specificfeedback format="html">
-      <text><![CDATA[<p>a)</p>
-<p>[[feedback:prt1]]</p>
-<p>b)</p>
+      <text><![CDATA[<p>a)</p>
+<p>[[feedback:prt1]]</p>
+<p>b)</p>
 <p>[[feedback:prt2]]</p>]]></text>
     </specificfeedback>
     <questionnote format="html">
-      <text><![CDATA[Write \(z={@zPar@}={@z@}\) in polar form. Answer: \({@radius@} \, e^{{@arg_z@} \, \mathrm i}\). <br>
-Determine the three roots \(\sqrt[3]{z}\).<br>
+      <text><![CDATA[Write \(z={@zPar@}={@z@}\) in polar form. Answer: \({@radius@} \, e^{{@arg_z@} \, \mathrm i}\). <br>
+Determine the three roots \(\sqrt[3]{z}\).<br>
 Answer: \(u_1 = {@polarform_simp(u1)@}\), \(u_2 = {@polarform_simp(u2)@}\) and \(u_3 = {@polarform_simp(u3)@}\).]]></text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
-      <text><![CDATA[This question has two interesting aspects.
-
-1. It deals with complex numbers in polar form.
-2. The answer is an example of "unsorted multi-input answers".  That is, we end up with a set of solutions at the end, and we want to decide that all are solutions, and all solutions are given!
-
-To deal with this, the last three inputs each have a PRT which checks (1) is the answer a root, and (2) is the root in the correct form.  Note the use of CasEqual in the PRTs which establish the student's answer is really the correct form, using `complex_exponentialp(ex)`.  Complex exponential forms are prone to being automatically simplified by Maxima back into Cartesian form!
-
+      <text><![CDATA[This question has two interesting aspects.
+
+1. It deals with complex numbers in polar form.
+2. The answer is an example of "unsorted multi-input answers".  That is, we end up with a set of solutions at the end, and we want to decide that all are solutions, and all solutions are given!
+
+To deal with this, the last three inputs each have a PRT which checks (1) is the answer a root, and (2) is the root in the correct form.  Note the use of CasEqual in the PRTs which establish the student's answer is really the correct form, using `complex_exponentialp(ex)`.  Complex exponential forms are prone to being automatically simplified by Maxima back into Cartesian form!
+
 We then have one PRT which checks the _set_ of answers is correct.]]></text>
     </questiondescription>
     <questionsimplify>0</questionsimplify>
@@ -175,7 +174,7 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>SAns1</name>
       <type>numerical</type>
@@ -183,16 +182,16 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <boxsize>4</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>SAns2</name>
@@ -201,16 +200,16 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>SAns3</name>
@@ -219,16 +218,16 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>SAns4</name>
@@ -237,16 +236,16 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>SAns5</name>
@@ -255,16 +254,16 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -272,19 +271,19 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>SAns1</sans>
         <tans>Tans1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
@@ -292,25 +291,25 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text><![CDATA[<p>The radius \(r\) is unfortunately wrong.</p>
+          <text><![CDATA[<p>The radius \(r\) is unfortunately wrong.</p>
 <p>If \(z = {@zPar@}\), then what must the distance to the origin be? That distance is the same as the radius! (As usual, use the Pythagorean theorem to calculate the distance.)</p>]]></text>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>SAns2</sans>
         <tans>Tans2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -318,11 +317,11 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text><![CDATA[<p>The argument \(\theta\) is unfortunately wrong.</p>
+          <text><![CDATA[<p>The argument \(\theta\) is unfortunately wrong.</p>
 <p>Use the figure! You know that the real part of \(z\) is \(0\), so what must the angle be? Remember the requirement \(-\pi &lt; \theta \leq \pi\).</p>]]></text>
         </falsefeedback>
       </node>
@@ -333,10 +332,10 @@ We then have one PRT which checks the _set_ of answers is correct.]]></text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text>SAnss: {polarform_simp(SAns3), polarform_simp(SAns4), polarform_simp(SAns5)};
-TAnss: {polarform_simp(Tans3), polarform_simp(Tans4), polarform_simp(Tans5)};
-
-/* Make sure all answers are solutions. */
+        <text>SAnss: {polarform_simp(SAns3), polarform_simp(SAns4), polarform_simp(SAns5)};
+TAnss: {polarform_simp(Tans3), polarform_simp(Tans4), polarform_simp(Tans5)};
+
+/* Make sure all answers are solutions. */
 SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
       </feedbackvariables>
       <node>
@@ -345,23 +344,23 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>AlgEquiv</answertest>
         <sans>SAnssc</sans>
         <tans>{z}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
@@ -370,19 +369,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>Sets</answertest>
         <sans>SAnss</sans>
         <tans>TAnss</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -396,7 +395,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -404,19 +403,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>AlgEquiv</answertest>
         <sans>SAns3^3</sans>
         <tans>z</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -429,19 +428,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>CasEqual</answertest>
         <sans>complex_exponentialp(SAns3)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -455,7 +454,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -463,19 +462,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>AlgEquiv</answertest>
         <sans>SAns4^3</sans>
         <tans>z</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -488,19 +487,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>CasEqual</answertest>
         <sans>complex_exponentialp(SAns4)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -514,7 +513,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -522,19 +521,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>AlgEquiv</answertest>
         <sans>SAns5^3</sans>
         <tans>z</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt5-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt5-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -547,19 +546,19 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
         <answertest>CasEqual</answertest>
         <sans>complex_exponentialp(SAns5)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt5-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -576,7 +575,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
     <deployedseed>1940161873</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>SAns1</name>
         <value>Tans1</value>
@@ -630,7 +629,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>SAns1</name>
         <value>Twrong1</value>
@@ -684,7 +683,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>SAns1</name>
         <value>Tans1</value>
@@ -738,7 +737,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>SAns1</name>
         <value>Tans1</value>
@@ -768,7 +767,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
       <expected>
         <name>prt2</name>
         <expectedscore>0.0000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt3-1-F</expectedanswernote>
       </expected>
       <expected>
@@ -792,7 +791,7 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>SAns1</name>
         <value>Tans1</value>
@@ -881,5 +880,4 @@ SAnssc:map(lambda([ex],ev(ratsimp(ex^3),simp)),SAnss);</text>
 </tag>
     </tags>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/JSXGraphs-Discrete_mathematics_graph-theory-2.xml b/samplequestions/stacklibrary/Topics/JSXGraphs-Discrete_mathematics_graph-theory-2.xml
index 5fc293527..f24e1b1a0 100644
--- a/samplequestions/stacklibrary/Topics/JSXGraphs-Discrete_mathematics_graph-theory-2.xml
+++ b/samplequestions/stacklibrary/Topics/JSXGraphs-Discrete_mathematics_graph-theory-2.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12700  -->
   <question type="stack">
     <name>
       <text><![CDATA[Discrete mathematics & graph theory - 2 - JSXGraphs]]></text>
@@ -43,7 +42,7 @@
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -61,10 +60,10 @@ ta1:2;</text>
       <text>[[feedback:prt1]]</text>
     </specificfeedback>
     <questionnote format="html">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="html">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -86,7 +85,7 @@ ta1:2;</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -94,16 +93,16 @@ ta1:2;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -111,27 +110,27 @@ ta1:2;</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -155,7 +154,7 @@ ta1:2;</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>3</value>
@@ -168,5 +167,4 @@ ta1:2;</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Cross-product-non-cancellation.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Cross-product-non-cancellation.xml
index a24f786db..d15262682 100644
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Cross-product-non-cancellation.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Cross-product-non-cancellation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12811  -->
   <question type="stack">
     <name>
       <text>Cross-product-non-cancellation.</text>
@@ -18,7 +17,7 @@
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -62,7 +61,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>checkbox</type>
@@ -70,16 +69,16 @@ incorr1:mcq_incorrect(ta1);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>1</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -87,15 +86,15 @@ incorr1:mcq_incorrect(ta1);]]></text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>setify(ans1)</sans>
         <tans>setify(corr1)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
@@ -103,7 +102,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-0-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -111,20 +110,20 @@ incorr1:mcq_incorrect(ta1);]]></text>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-0-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>subsetp(setify(ans1),setify(corr1))</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -132,32 +131,32 @@ incorr1:mcq_incorrect(ta1);]]></text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>CasEqual</answertest>
         <sans>cardinality(ev(intersection(setify(incorr1),setify(ans1)),simp))</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -177,7 +176,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
     <deployedseed>1201499788</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[incorr1[1]]</value>
@@ -191,7 +190,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>corr1</value>
@@ -205,7 +204,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[corr1[1],incorr1[1]]</value>
@@ -219,7 +218,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[corr1[1]]</value>
@@ -227,7 +226,7 @@ incorr1:mcq_incorrect(ta1);]]></text>
       <expected>
         <name>prt1</name>
         <expectedscore>0.5000000</expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedpenalty/>
         <expectedanswernote>prt1-2-T</expectedanswernote>
       </expected>
     </qtest>
@@ -236,5 +235,4 @@ incorr1:mcq_incorrect(ta1);]]></text>
 </tag>
     </tags>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Diagonalizable-proof-comprehension.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Diagonalizable-proof-comprehension.xml
index a7f5cb4a6..992c30ebb 100644
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Diagonalizable-proof-comprehension.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Diagonalizable-proof-comprehension.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112258  -->
   <question type="stack">
     <name>
       <text>Diagonalizable proof comprehension</text>
@@ -53,7 +52,7 @@ This proof is not correct because [[input:an2]] [[validation:an2]]
     <defaultgrade>10</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -86,9 +85,7 @@ tb1:false;
 tballow2:["the converse is missing","missing converse", "half the proof is missing", "the reverse direction is missing", "you must prove the converse as well", "only proved one way", "the converse has not been proved","it doesn't prove the double implication","they have only proved it in one direction","show the converse","The proof should be and if and only if proof","there is no converse in the proof", "there is no converse", "it only proves one direction of the if and only if statement", "did not proof the converse of the theorem"];
 tballow2:append(tballow2, ["didn't prove that A  having n linearly independent eigenvectors means that A is diagonalizable"]);
 tbforbid2:["the converse is not true"];
-tb3:true;
-
-]]></text>
+tb3:true;]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<ul>
@@ -100,7 +97,7 @@ tb3:true;
 </ul>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text>This question is distributed as part of the STACK source code as an example. This is licenced as Creative Commons Attribution-ShareAlike 4.0 International License.</text>
@@ -125,7 +122,7 @@ tb3:true;
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>an1</name>
       <type>boolean</type>
@@ -133,16 +130,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>an2</name>
@@ -151,10 +148,10 @@ tb3:true;
       <boxsize>50</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -169,16 +166,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans1</name>
@@ -187,16 +184,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -205,16 +202,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -223,9 +220,9 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>4</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
+      <forbidwords/>
       <allowwords>lambdak</allowwords>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
@@ -241,16 +238,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>answ2</name>
@@ -259,16 +256,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>answ3</name>
@@ -277,16 +274,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>answ4</name>
@@ -295,16 +292,16 @@ tb3:true;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -312,44 +309,44 @@ tb3:true;
       <autosimplify>0</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>CasEqual</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>CasEqual</answertest>
         <sans>ans1</sans>
         <tans>P*A*P^(-1)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.25</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -357,49 +354,49 @@ tb3:true;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>CasEqual</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>3</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>CasEqual</answertest>
         <sans>ans2</sans>
         <tans>D*P</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.25</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-4-T</trueanswernote>
         <truefeedback format="html">
@@ -407,11 +404,11 @@ tb3:true;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-4-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -421,32 +418,31 @@ tb3:true;
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text>sa3:at(ans3,[p_k=pk,lambda_k=lambdak]);
-</text>
+        <text>sa3:at(ans3,[p_k=pk,lambda_k=lambdak]);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -461,23 +457,23 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa1</sans>
         <tans>sa2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -492,27 +488,27 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>an1</sans>
         <tans>tb1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.33</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -521,32 +517,32 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>StringSloppy</answertest>
         <sans>an2</sans>
         <tans><![CDATA[""]]></tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>+</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt4-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>Levenshtein</answertest>
         <sans>an2</sans>
         <tans>[tballow2,tbforbid2]</tans>
@@ -554,19 +550,19 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.67</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -576,37 +572,37 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>an3</sans>
         <tans>tb3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt5-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>an1</name>
         <value>tb1</value>
@@ -680,7 +676,7 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>an1</name>
         <value>false</value>
@@ -707,19 +703,19 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       </testinput>
       <testinput>
         <name>answ1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ3</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>answ4</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -735,8 +731,8 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
@@ -753,5 +749,4 @@ sa2:[wsa1,wsa2,wsa3,wsa4];</text>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-eigenvectors-give-examples.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-eigenvectors-give-examples.xml
index 0f5733f26..0a19ad10d 100644
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-eigenvectors-give-examples.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-eigenvectors-give-examples.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112220  -->
   <question type="stack">
     <name>
       <text>Eigenvalues and eigenvectors - give examples</text>
@@ -64,7 +63,7 @@ In this question, we have eigenvalues \(\lambda_1 = 1\) and \(\lambda_2 = {@a2@}
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2022082900</text>
     </stackversion>
@@ -110,10 +109,10 @@ D:D1 . P1;
 testa6:D;</text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text> \(\lambda_1 = 1\) (fixed), \(\lambda_2 = {@a2@}\): {@ta6@}</text>
+      <text>\(\lambda_1 = 1\) (fixed), \(\lambda_2 = {@a2@}\): {@ta6@}</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text>This question is distributed as part of the STACK source code as an example. This is licenced as Creative Commons Attribution-ShareAlike 4.0 International License.</text>
@@ -138,7 +137,7 @@ testa6:D;</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -146,16 +145,16 @@ testa6:D;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -164,16 +163,16 @@ testa6:D;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -182,16 +181,16 @@ testa6:D;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -200,16 +199,16 @@ testa6:D;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans5</name>
@@ -218,16 +217,16 @@ testa6:D;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans6</name>
@@ -236,16 +235,16 @@ testa6:D;</text>
       <boxsize>2</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans7</name>
@@ -254,16 +253,16 @@ testa6:D;</text>
       <boxsize>70</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>2</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -271,56 +270,56 @@ testa6:D;</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>SubstEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -337,7 +336,7 @@ node1:is(sa2evrank=ta2evrank)</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>node1</sans>
         <tans>true</tans>
@@ -345,15 +344,15 @@ node1:is(sa2evrank=ta2evrank)</text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -367,19 +366,19 @@ node1:is(sa2evrank=ta2evrank)</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>matrix([0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
@@ -387,32 +386,32 @@ node1:is(sa2evrank=ta2evrank)</text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2.ans3</sans>
         <tans>a1*ans3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -427,11 +426,11 @@ node1:is(sa2evrank=ta2evrank)</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans4</sans>
         <tans>matrix([0],[0])</tans>
@@ -439,7 +438,7 @@ node1:is(sa2evrank=ta2evrank)</text>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
@@ -447,32 +446,32 @@ node1:is(sa2evrank=ta2evrank)</text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2.ans4</sans>
         <tans>a2*ans4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -487,27 +486,27 @@ node1:is(sa2evrank=ta2evrank)</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans5</sans>
         <tans>ta5</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt5-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -540,19 +539,19 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa6evrank</sans>
         <tans>[a2,a1]</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt6-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -565,7 +564,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>node2</sans>
         <tans>true</tans>
@@ -573,11 +572,11 @@ node1:is(sa6evrank=[a2,a1]);</text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>5</truenextnode>
         <trueanswernote>prt6-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
@@ -590,19 +589,19 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>determinant(ans6)</sans>
         <tans>determinant(ans2)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>3</truenextnode>
         <trueanswernote>prt6-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
@@ -615,7 +614,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>node4</sans>
         <tans>true</tans>
@@ -623,11 +622,11 @@ node1:is(sa6evrank=[a2,a1]);</text>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>4</truenextnode>
         <trueanswernote>prt6-4-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
@@ -640,19 +639,19 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </node>
       <node>
         <name>4</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa2tr</sans>
         <tans>sa6tr</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>0</truenextnode>
         <trueanswernote>prt6-5-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
@@ -665,7 +664,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </node>
       <node>
         <name>5</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>node6</sans>
         <tans>true</tans>
@@ -673,15 +672,15 @@ node1:is(sa6evrank=[a2,a1]);</text>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt6-6-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt6-6-F</falseanswernote>
         <falsefeedback format="html">
@@ -694,7 +693,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
     <deployedseed>873158876</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -758,7 +757,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>testa1</value>
@@ -822,7 +821,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>(x-10)*(x-2)</value>
@@ -849,7 +848,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </testinput>
       <testinput>
         <name>ans7</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -890,7 +889,7 @@ node1:is(sa6evrank=[a2,a1]);</text>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>testa1</value>
@@ -954,34 +953,34 @@ node1:is(sa6evrank=[a2,a1]);</text>
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ev(ta1,x=lambda)</value>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans4</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans5</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans6</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans7</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -991,35 +990,34 @@ node1:is(sa6evrank=[a2,a1]);</text>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt6</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-3-3.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-3-3.xml
index 52b2598d1..4e956cb20 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-3-3.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-3-3.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112269  -->
   <question type="stack">
     <name>
       <text>Eigenvalues and vectors of 3*3 matrices.</text>
@@ -25,7 +24,7 @@ This gives
     <defaultgrade>6</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -76,7 +75,7 @@ cp:expand(determinant(LI-M));</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>l1</name>
       <type>algebraic</type>
@@ -84,16 +83,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>l2</name>
@@ -102,16 +101,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>l3</name>
@@ -120,16 +119,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev1</name>
@@ -138,16 +137,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev2</name>
@@ -156,16 +155,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev3</name>
@@ -174,16 +173,16 @@ cp:expand(determinant(LI-M));</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>ev1</name>
@@ -191,27 +190,27 @@ cp:expand(determinant(LI-M));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev1</sans>
         <tans>l1*sev1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -220,15 +219,15 @@ cp:expand(determinant(LI-M));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev1</sans>
         <tans>matrix([0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -236,11 +235,11 @@ cp:expand(determinant(LI-M));</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -250,27 +249,27 @@ cp:expand(determinant(LI-M));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev2</sans>
         <tans>l2*sev2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev2-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -279,15 +278,15 @@ cp:expand(determinant(LI-M));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev2</sans>
         <tans>matrix([0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev2-2-T</trueanswernote>
         <truefeedback format="html">
@@ -295,11 +294,11 @@ cp:expand(determinant(LI-M));</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev2-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -309,27 +308,27 @@ cp:expand(determinant(LI-M));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev3</sans>
         <tans>l3*sev3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev3-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -338,15 +337,15 @@ cp:expand(determinant(LI-M));</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev3</sans>
         <tans>matrix([0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev3-2-T</trueanswernote>
         <truefeedback format="html">
@@ -354,11 +353,11 @@ cp:expand(determinant(LI-M));</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev3-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -368,27 +367,27 @@ cp:expand(determinant(LI-M));</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>{l1,l2,l3}</sans>
         <tans>{e1,e2,e3}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.75</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>4</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>4</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -397,23 +396,23 @@ cp:expand(determinant(LI-M));</text>
       </node>
       <node>
         <name>4</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>length({l1,l2,l3})</sans>
         <tans>3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.25</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-5-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-5-F</falseanswernote>
         <falsefeedback format="html">
@@ -430,7 +429,7 @@ cp:expand(determinant(LI-M));</text>
     <deployedseed>1510782468</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e1</value>
@@ -482,7 +481,7 @@ cp:expand(determinant(LI-M));</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e1</value>
@@ -534,7 +533,7 @@ cp:expand(determinant(LI-M));</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e3</value>
@@ -585,5 +584,4 @@ cp:expand(determinant(LI-M));</text>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-4-4.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-4-4.xml
index 78edc28b2..ff0d86594 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-4-4.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-4-4.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112437  -->
   <question type="stack">
     <name>
       <text>Eigenvalues and vectors of of structured 4*4 matrices.</text>
@@ -33,7 +32,7 @@ This gives
     <defaultgrade>2</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023121100</text>
     </stackversion>
@@ -57,8 +56,7 @@ cp:expand(determinant(LI-M));
 S1:submatrix(3,4,M,3,4);
 cp1:matrix([lambda,0],[0,lambda])-S1;
 cp2:expand(determinant(cp1));
-cp3:factor(expand(cp/cp2));
-</text>
+cp3:factor(expand(cp/cp2));</text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[Overall: [[feedback:prt1]]
@@ -71,7 +69,7 @@ cp3:factor(expand(cp/cp2));
       <text>\( PDP^{-1} = {@P@}{@D@}{@PI@} = {@M@}.\)</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -93,7 +91,7 @@ cp3:factor(expand(cp/cp2));
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>l1</name>
       <type>algebraic</type>
@@ -101,16 +99,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>l2</name>
@@ -119,16 +117,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>l3</name>
@@ -137,16 +135,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>l4</name>
@@ -155,16 +153,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev1</name>
@@ -173,16 +171,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev2</name>
@@ -191,16 +189,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev3</name>
@@ -209,16 +207,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>1</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>sev4</name>
@@ -227,16 +225,16 @@ cp3:factor(expand(cp/cp2));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>ev1</name>
@@ -244,27 +242,27 @@ cp3:factor(expand(cp/cp2));
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev1</sans>
         <tans>l1*sev1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -273,15 +271,15 @@ cp3:factor(expand(cp/cp2));
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev1</sans>
         <tans>matrix([0],[0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -289,11 +287,11 @@ cp3:factor(expand(cp/cp2));
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -303,27 +301,27 @@ cp3:factor(expand(cp/cp2));
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev2</sans>
         <tans>l2*sev2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev2-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -332,15 +330,15 @@ cp3:factor(expand(cp/cp2));
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev2</sans>
         <tans>matrix([0],[0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev2-2-T</trueanswernote>
         <truefeedback format="html">
@@ -348,11 +346,11 @@ cp3:factor(expand(cp/cp2));
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev2-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -362,27 +360,27 @@ cp3:factor(expand(cp/cp2));
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev3</sans>
         <tans>l3*sev3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev3-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -391,15 +389,15 @@ cp3:factor(expand(cp/cp2));
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev3</sans>
         <tans>matrix([0],[0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev3-2-T</trueanswernote>
         <truefeedback format="html">
@@ -407,11 +405,11 @@ cp3:factor(expand(cp/cp2));
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev3-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -421,27 +419,27 @@ cp3:factor(expand(cp/cp2));
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>M.sev4</sans>
         <tans>l4*sev4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>ev4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev4-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -450,15 +448,15 @@ cp3:factor(expand(cp/cp2));
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sev4</sans>
         <tans>matrix([0],[0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>ev4-2-T</trueanswernote>
         <truefeedback format="html">
@@ -466,11 +464,11 @@ cp3:factor(expand(cp/cp2));
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>ev4-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -480,27 +478,27 @@ cp3:factor(expand(cp/cp2));
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>{l1,l2,l3,l4}</sans>
         <tans>{e1,e2,e3,e4}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.75</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>4</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>4</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -509,23 +507,23 @@ cp3:factor(expand(cp/cp2));
       </node>
       <node>
         <name>4</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>length({l1,l2,l3,l4})</sans>
         <tans>4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.25</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-5-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-5-F</falseanswernote>
         <falsefeedback format="html">
@@ -542,7 +540,7 @@ cp3:factor(expand(cp/cp2));
     <deployedseed>1510782468</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e1</value>
@@ -608,7 +606,7 @@ cp3:factor(expand(cp/cp2));
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e1</value>
@@ -674,7 +672,7 @@ cp3:factor(expand(cp/cp2));
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>l1</name>
         <value>e3</value>
@@ -739,5 +737,4 @@ cp3:factor(expand(cp/cp2));
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-PDPT.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-PDPT.xml
index a05e5f1a8..77f6e064d 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-PDPT.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Eigenvalues-vectors-PDPT.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112297  -->
   <question type="stack">
     <name>
       <text>Find eigenvalues 3*3 +PDP^-1</text>
@@ -24,7 +23,7 @@
     <defaultgrade>10</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2021120900</text>
     </stackversion>
@@ -84,7 +83,7 @@ B: U_P.(D^2012).U_PT</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -92,16 +91,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -110,16 +109,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -128,16 +127,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -146,16 +145,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans5</name>
@@ -164,16 +163,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans6</name>
@@ -182,16 +181,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans7</name>
@@ -200,16 +199,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans8</name>
@@ -218,16 +217,16 @@ B: U_P.(D^2012).U_PT</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -235,27 +234,27 @@ B: U_P.(D^2012).U_PT</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>A.ans2</sans>
         <tans>ans1*ans2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.3400000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -264,23 +263,23 @@ B: U_P.(D^2012).U_PT</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>A.ans4</sans>
         <tans>ans3*ans4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.3300000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -289,23 +288,23 @@ B: U_P.(D^2012).U_PT</text>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>A.ans6</sans>
         <tans>ans5*ans6</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.3300000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>3</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>3</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -314,23 +313,23 @@ B: U_P.(D^2012).U_PT</text>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>{ans1,ans3,ans5}</sans>
         <tans>{lambda1,lambda2,lambda3}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>4</truenextnode>
         <trueanswernote>prt1-4-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.5000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>4</falsenextnode>
         <falseanswernote>prt1-4-F</falseanswernote>
         <falsefeedback format="html">
@@ -339,15 +338,15 @@ B: U_P.(D^2012).U_PT</text>
       </node>
       <node>
         <name>4</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>elementp(transpose(matrix([0,0,0])), {ans2,ans4,ans6})</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>-</truescoremode>
         <truescore>0.4000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-5-T</trueanswernote>
         <truefeedback format="html">
@@ -355,11 +354,11 @@ B: U_P.(D^2012).U_PT</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-5-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -374,23 +373,23 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>transpose(ans7).A.ans7</sans>
         <tans>ans8</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.8000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -399,23 +398,23 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sde</sans>
         <tans>{0}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.2000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -425,7 +424,7 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>lambda1</value>
@@ -473,7 +472,7 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>lambda2</value>
@@ -521,7 +520,7 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>lambda1</value>
@@ -548,11 +547,11 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
       </testinput>
       <testinput>
         <name>ans7</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans8</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -562,11 +561,10 @@ sde:{ans8[1,2],ans8[1,3],ans8[2,1],ans8[2,3],ans8[3,1],ans8[3,1]}</text>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Equation-plane-counter-example.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Equation-plane-counter-example.xml
index 6f8c5a546..159b28d1b 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Equation-plane-counter-example.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Equation-plane-counter-example.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112262  -->
   <question type="stack">
     <name>
       <text>Subspace and planes in R3</text>
@@ -26,7 +25,7 @@ Since the right hand side is \(0\) we immediately see that the zero vector belon
     <defaultgrade>3</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -67,7 +66,7 @@ tac:transpose(tan).tap;</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>boolean</type>
@@ -75,16 +74,16 @@ tac:transpose(tan).tap;</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansp</name>
@@ -93,10 +92,10 @@ tac:transpose(tan).tap;</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -111,10 +110,10 @@ tac:transpose(tan).tap;</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -129,10 +128,10 @@ tac:transpose(tan).tap;</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -148,28 +147,27 @@ tac:transpose(tan).tap;</text>
       <feedbackvariables>
         <text>sanse:elementp(matrix([null],[null],[null]),{ansp,ansu,ansv});
 sansn:crossproduct(ansu,ansv);
-sansc:transpose(sansn).ansp;
-</text>
+sansc:transpose(sansn).ansp;</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.33</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>4</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -178,15 +176,15 @@ sansc:transpose(sansn).ansp;
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sansn</sans>
         <tans>matrix([0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>-</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -194,24 +192,24 @@ sansc:transpose(sansn).ansp;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ansp</sans>
         <tans>matrix([0],[0],[0])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
@@ -219,24 +217,24 @@ sansc:transpose(sansn).ansp;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>3</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sansc</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.67</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-4-T</trueanswernote>
         <truefeedback format="html">
@@ -244,24 +242,24 @@ sansc:transpose(sansn).ansp;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-4-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>4</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sanse</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-5-T</trueanswernote>
         <truefeedback format="html">
@@ -269,17 +267,17 @@ sansc:transpose(sansn).ansp;
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-5-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -305,22 +303,22 @@ sansc:transpose(sansn).ansp;
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>true</value>
       </testinput>
       <testinput>
         <name>ansp</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansu</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -331,22 +329,22 @@ sansc:transpose(sansn).ansp;
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
       </testinput>
       <testinput>
         <name>ansp</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansu</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
@@ -357,7 +355,7 @@ sansc:transpose(sansn).ansp;
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -383,7 +381,7 @@ sansc:transpose(sansn).ansp;
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -408,5 +406,4 @@ sansc:transpose(sansn).ansp;
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-dependence.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-dependence.xml
index a01d75ebf..efa1f9133 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-dependence.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-dependence.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112268  -->
   <question type="stack">
     <name>
       <text>Linear dependence</text>
@@ -20,7 +19,7 @@ If such values do not exist, enter <code>null</code> for all entries. </p>
     <defaultgrade>1</defaultgrade>
     <penalty>0</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -71,7 +70,7 @@ detmatrix:determinant(matrixv312);</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -79,16 +78,16 @@ detmatrix:determinant(matrixv312);</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
       <forbidwords>determinant</forbidwords>
-      <allowwords></allowwords>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>1</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -97,16 +96,16 @@ detmatrix:determinant(matrixv312);</text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
       <forbidwords>determinant</forbidwords>
-      <allowwords></allowwords>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>1</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>Result</name>
@@ -114,56 +113,56 @@ detmatrix:determinant(matrixv312);</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>correctanswer[1]</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>Result-0-T </trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>Result-0-F </falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>correctanswer[2]</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>Result-1-T </trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>Result-1-F </falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -187,7 +186,7 @@ detmatrix:determinant(matrixv312);</text>
     <deployedseed>1988758674</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>correctanswer[1]</value>
@@ -205,7 +204,7 @@ detmatrix:determinant(matrixv312);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>correctanswer[1]-1</value>
@@ -222,5 +221,4 @@ detmatrix:determinant(matrixv312);</text>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-system.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-system.xml
index 626ab0701..197abee13 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-system.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Linear-system.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112379  -->
   <question type="stack">
     <name>
       <text>Linear systems</text>
@@ -66,7 +65,7 @@ Evaluating this at \(k={@k2@}\) gives
     <defaultgrade>6</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023121100</text>
     </stackversion>
@@ -123,8 +122,7 @@ WS:solve(flatten(args(submatrix(WTAM2,5).transpose([v1,v2,v3,v4])-submatrix(WTAM
 WS:stack_strip_percent(first(WS),[t]);
 
 taw1: maplist(lambda([ex2], rhs(first(sublist(WS,lambda([ex],lhs(ex)=ex2))))),[v1,v2,v3,v4]);
-taw1: transpose(apply(matrix,[taw1]));
-</text>
+taw1: transpose(apply(matrix,[taw1]));</text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]
@@ -133,7 +131,7 @@ taw1: transpose(apply(matrix,[taw1]));
 [[feedback:prt4]]</text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text>\( {@QAM@} \rightarrow {@TAM1@} \) Inconsistent: \(k={@k1@}\). Infinite solutions: \(k={@k2@}\). \(\mathbf{x} = {@ta4@} \). </text>
+      <text>\( {@QAM@} \rightarrow {@TAM1@} \) Inconsistent: \(k={@k1@}\). Infinite solutions: \(k={@k2@}\). \(\mathbf{x} = {@ta4@} \).</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text>This question is distributed as part of the STACK source code as an example. This is licenced as Creative Commons Attribution-ShareAlike 4.0 International License.</text>
@@ -158,7 +156,7 @@ taw1: transpose(apply(matrix,[taw1]));
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>matrix</type>
@@ -166,16 +164,16 @@ taw1: transpose(apply(matrix,[taw1]));
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -186,14 +184,14 @@ taw1: transpose(apply(matrix,[taw1]));
       <insertstars>0</insertstars>
       <syntaxhint>{?,?}</syntaxhint>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -202,16 +200,16 @@ taw1: transpose(apply(matrix,[taw1]));
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -220,16 +218,16 @@ taw1: transpose(apply(matrix,[taw1]));
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -238,29 +236,27 @@ taw1: transpose(apply(matrix,[taw1]));
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
         <text>/* Pick our the entries which need to be zero. */
-sa1:setify(flatten(makelist(makelist(ans1[l1,l2],l2,1,l1-1),l1,2,first(matrix_size(ans1)))));
-
-</text>
+sa1:setify(flatten(makelist(makelist(ans1[l1,l2],l2,1,l1-1),l1,2,first(matrix_size(ans1)))));</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>Sets</answertest>
         <sans>sa1</sans>
         <tans>{0}</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.2</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -269,23 +265,23 @@ sa1:setify(flatten(makelist(makelist(ans1[l1,l2],l2,1,l1-1),l1,2,first(matrix_si
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>rref(ans1)</sans>
         <tans>rref(TAM1)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -299,31 +295,31 @@ sa1:setify(flatten(makelist(makelist(ans1[l1,l2],l2,1,l1-1),l1,2,first(matrix_si
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>Sets</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -338,40 +334,40 @@ sd1:determinant(at(SM2,k=ans3))</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sd1</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-2-T</trueanswernote>
         <truefeedback format="html">
@@ -379,7 +375,7 @@ sd1:determinant(at(SM2,k=ans3))</text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -394,20 +390,19 @@ sd1:determinant(at(SM2,k=ans3))</text>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
         <text>v4:listofvars(ans4);
-SM2:submatrix(ans1,5);
-</text>
+SM2:submatrix(ans1,5);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>length(v4)</sans>
         <tans>1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.3</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
@@ -415,7 +410,7 @@ SM2:submatrix(ans1,5);
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -424,23 +419,23 @@ SM2:submatrix(ans1,5);
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>at(QA,k=ans3).ans4</sans>
         <tans>Qb</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.7</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt4-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -452,15 +447,15 @@ In fact
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>at(SM2,k=ans3).ans4</sans>
         <tans>submatrix(ans1,1,2,3,4)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.7</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-3-T</trueanswernote>
         <truefeedback format="html">
@@ -471,7 +466,7 @@ So, although your row reductions contain a mistake you have correctly solved the
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-3-F</falseanswernote>
         <falsefeedback format="html">
@@ -490,7 +485,7 @@ So, no follow-through marking applies here either.</text>
     <deployedseed>1814590374</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>TAM1</value>
@@ -534,7 +529,7 @@ So, no follow-through marking applies here either.</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>WTAM1</value>
@@ -577,5 +572,4 @@ So, no follow-through marking applies here either.</text>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Matrix-Algebra-give-examples.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Matrix-Algebra-give-examples.xml
index 3ea731c85..8b20b138c 100644
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Matrix-Algebra-give-examples.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Matrix-Algebra-give-examples.xml
@@ -1,70 +1,69 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 4524  -->
   <question type="stack">
     <name>
       <text>Matrix Algebra - give an example</text>
     </name>
     <questiontext format="html">
-      <text><![CDATA[<ol>
- <li>Give an example of matrices \(A\), \(B\) such that \(A\cdot B =\left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \) and both \(A , \, B \neq \left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \)
-
-<div style="padding:0.5em">\(A=\)[[input:a1A]][[validation:a1A]] , \(B=\)[[input:a1B]][[validation:a1B]][[feedback:prt1]]</div></li>
-<li>Give a different pair of nonzero matrices \(C\), \(D\) such that \(C\cdot D =\left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \).
-<div style="padding:0.5em">\(C=\)[[input:a2A]][[validation:a2A]] , \(D=\)[[input:a2B]][[validation:a2B]][[feedback:prt2]]</div></li>
-<li>Consider the following statement:
-<p>There do not exist \(2 \times 2 \) matrices \(E, \, F\) with rank\((E)\)\(=\)rank\((F)\)\(=2\) such that \(E\cdot F = \left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \).</p>
-<p>Select whether it is true or false, and give either a proof or counterexample as appropriate.</p>
-        <div>This statement is [[input:a4]][[validation:a4]] [[feedback:prt4]]</div>
-       [[reveal input="a4" value="true"]]
-            <p>Proof:</p>[[input:a4_true]][[validation:a4_true]]
-       [[/reveal]]
-       [[reveal input="a4" value="false"]]
-            <p>Counterexample:</p>
-            <div style="padding:0.5em">\(E=\)[[input:a3A]][[validation:a3A]] , \(F=\)[[input:a3B]] [[validation:a3B]] [[feedback:prt3]]</div>
-       [[/reveal]]
-    </li>
+      <text><![CDATA[<ol>
+ <li>Give an example of matrices \(A\), \(B\) such that \(A\cdot B =\left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \) and both \(A , \, B \neq \left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \)
+
+<div style="padding:0.5em">\(A=\)[[input:a1A]][[validation:a1A]] , \(B=\)[[input:a1B]][[validation:a1B]][[feedback:prt1]]</div></li>
+<li>Give a different pair of nonzero matrices \(C\), \(D\) such that \(C\cdot D =\left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \).
+<div style="padding:0.5em">\(C=\)[[input:a2A]][[validation:a2A]] , \(D=\)[[input:a2B]][[validation:a2B]][[feedback:prt2]]</div></li>
+<li>Consider the following statement:
+<p>There do not exist \(2 \times 2 \) matrices \(E, \, F\) with rank\((E)\)\(=\)rank\((F)\)\(=2\) such that \(E\cdot F = \left( \begin{array}{cc} 0 &amp; 0 \\ 0 &amp; 0 \end{array} \right) \).</p>
+<p>Select whether it is true or false, and give either a proof or counterexample as appropriate.</p>
+        <div>This statement is [[input:a4]][[validation:a4]] [[feedback:prt4]]</div>
+       [[reveal input="a4" value="true"]]
+            <p>Proof:</p>[[input:a4_true]][[validation:a4_true]]
+       [[/reveal]]
+       [[reveal input="a4" value="false"]]
+            <p>Counterexample:</p>
+            <div style="padding:0.5em">\(E=\)[[input:a3A]][[validation:a3A]] , \(F=\)[[input:a3B]] [[validation:a3B]] [[feedback:prt3]]</div>
+       [[/reveal]]
+    </li>
 </ol>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text><![CDATA[<h4>Worked Solution</h4>
-<p>We denote the row of matrix \(A\) by \(A_i\), columns of matrix \(B\) by \(b_j\) and columns of matrix \(AB\) by \((ab)_j\). Then the matrix \(AB={@zmatrix@}\) are made up of two column vectors, namely \((ab)_1={@cvec@}\) and \((ab)_2={@cvec@}\). <p></p>
-Thus, we break this problem down into two parts which are \((ab)_1=A \cdot b_1={@cvec@}\) and \((ab)_2=A \cdot b_2={@cvec@}\).  <p></p>
-Note that this is a linear transformation from \(\mathbb{R}^2\) to \(\mathbb{R}^2\) as \(A\) maps \(b_1\) to \({@cvec@}\) and \(b_2\) to \({@cvec@}\).
-</p>
-<p>By the dimension theorem, \(\text{dim}(\mathbb{R}^2)= \text{nullity}(A)+\text{rank}(A)\).
-As \(A\neq{@zmatrix@}\), \(\text{nullity}(A)&lt;2\). On the other hand, \(b_1\neq{@cvec@}\) and \(b_2\neq{@cvec@}\) is in the null space of \(A\) so, \(\text{nullity}(A)\neq0\) which implies that \(\text{nullity}(A)=1\). This means that the rows or columns of the matrix \(A\) are linearly dependent. 
-</p>
-<p>
-Again, from the dimension theorem, we know that \(\text{rank}(B)\neq2\) since if \(\text{rank}(B)=2\) then \(\text{nullity}(A)=2\) which contradicts our assumption that \(A\) cannot be the zero matrix. From our assumption, we also know that \(\text{rank}(B)\neq0\) as \(B\) cannot be the zero matrix. Hence, similar to \(A\), \(B\) has \(\text{rank}=1\).</p>
-<p>
-To find an example of matrices \(A,B\) which satisfies the condition, we set \(A\) to be any matrix with linearly dependent columns or rows. Then solve for \(B\).
-For example, \(A\) can be of the form \(\left( \begin{array}{cc} a &amp; a \\ ca &amp; ca \end{array} \right)\) for any \(c,a \in \mathbb{R}\).</p><p>
+      <text><![CDATA[<h4>Worked Solution</h4>
+<p>We denote the row of matrix \(A\) by \(A_i\), columns of matrix \(B\) by \(b_j\) and columns of matrix \(AB\) by \((ab)_j\). Then the matrix \(AB={@zmatrix@}\) are made up of two column vectors, namely \((ab)_1={@cvec@}\) and \((ab)_2={@cvec@}\). <p></p>
+Thus, we break this problem down into two parts which are \((ab)_1=A \cdot b_1={@cvec@}\) and \((ab)_2=A \cdot b_2={@cvec@}\).  <p></p>
+Note that this is a linear transformation from \(\mathbb{R}^2\) to \(\mathbb{R}^2\) as \(A\) maps \(b_1\) to \({@cvec@}\) and \(b_2\) to \({@cvec@}\).
+</p>
+<p>By the dimension theorem, \(\text{dim}(\mathbb{R}^2)= \text{nullity}(A)+\text{rank}(A)\).
+As \(A\neq{@zmatrix@}\), \(\text{nullity}(A)&lt;2\). On the other hand, \(b_1\neq{@cvec@}\) and \(b_2\neq{@cvec@}\) is in the null space of \(A\) so, \(\text{nullity}(A)\neq0\) which implies that \(\text{nullity}(A)=1\). This means that the rows or columns of the matrix \(A\) are linearly dependent. 
+</p>
+<p>
+Again, from the dimension theorem, we know that \(\text{rank}(B)\neq2\) since if \(\text{rank}(B)=2\) then \(\text{nullity}(A)=2\) which contradicts our assumption that \(A\) cannot be the zero matrix. From our assumption, we also know that \(\text{rank}(B)\neq0\) as \(B\) cannot be the zero matrix. Hence, similar to \(A\), \(B\) has \(\text{rank}=1\).</p>
+<p>
+To find an example of matrices \(A,B\) which satisfies the condition, we set \(A\) to be any matrix with linearly dependent columns or rows. Then solve for \(B\).
+For example, \(A\) can be of the form \(\left( \begin{array}{cc} a &amp; a \\ ca &amp; ca \end{array} \right)\) for any \(c,a \in \mathbb{R}\).</p><p>
 One such example is \(A={@ta1A@}\). An example for \(B\) which satisfies the condition would be \(B={@ta1B@}\).</p>]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024111500</text>
     </stackversion>
     <questionvariables>
-      <text>ta1A:matrix([1,1],[2,2]);
-ta1B:matrix([2,2],[-2,-2]);
-ta2A:matrix([1,1],[-1,-1]);
-ta2B:matrix([1,1],[-1,-1]);
-ta3A:matrix([null,null],[null,null]);
-ta3B:matrix([null,null],[null,null]);
-ta4:true;
-zmatrix:matrix([0,0],[0,0]);
+      <text>ta1A:matrix([1,1],[2,2]);
+ta1B:matrix([2,2],[-2,-2]);
+ta2A:matrix([1,1],[-1,-1]);
+ta2B:matrix([1,1],[-1,-1]);
+ta3A:matrix([null,null],[null,null]);
+ta3B:matrix([null,null],[null,null]);
+ta4:true;
+zmatrix:matrix([0,0],[0,0]);
 cvec:matrix([0],[0]);</text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text>This question is distributed as part of the STACK source code as an example. This is licenced as Creative Commons Attribution-ShareAlike 4.0 International License.</text>
@@ -89,7 +88,7 @@ cvec:matrix([0],[0]);</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>a1A</name>
       <type>matrix</type>
@@ -97,16 +96,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>a1B</name>
@@ -115,16 +114,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>a2A</name>
@@ -133,16 +132,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>a2B</name>
@@ -151,16 +150,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>a3A</name>
@@ -169,10 +168,10 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -187,10 +186,10 @@ cvec:matrix([0],[0]);</text>
       <boxsize>1</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -205,16 +204,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>a4_true</name>
@@ -223,16 +222,16 @@ cvec:matrix([0],[0]);</text>
       <boxsize>70</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -240,47 +239,47 @@ cvec:matrix([0],[0]);</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text>a: a1A;
-b:a1B;
-if notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elseif rank(a)=0 or rank(b)=0 or (rank(a)=0 and rank(b)=1) then Mark:-1 elseif notequal(rank(a.b),0) then Mark:0;
+        <text>a: a1A;
+b:a1B;
+if notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elseif rank(a)=0 or rank(b)=0 or (rank(a)=0 and rank(b)=1) then Mark:-1 elseif notequal(rank(a.b),0) then Mark:0;
 /*Mark=1 when correct, Mark=0 when A multiplied by B does not give the zero matrix, Mark=-1 when A or B or both = the zero matrix.*/</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
@@ -288,24 +287,24 @@ if notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elsei
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>-1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
@@ -313,11 +312,11 @@ if notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elsei
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -327,49 +326,49 @@ if notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elsei
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text>a: a2A;
-b:a2B;
-c:a1A;
-d:a1B;
-if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 elseif notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elseif rank(a)=0 or rank(b)=0 or (rank(a)=0 and rank(b)=1) then Mark:-1 elseif notequal(rank(a.b),0) then Mark:0;
+        <text>a: a2A;
+b:a2B;
+c:a1A;
+d:a1B;
+if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 elseif notequal(rank(a),0) and notequal(rank(b),0) and rank(a.b)=0 then Mark:1 elseif rank(a)=0 or rank(b)=0 or (rank(a)=0 and rank(b)=1) then Mark:-1 elseif notequal(rank(a.b),0) then Mark:0;
 /*Mark=1 when correct, Mark=0 when A multiplied by B does not give the zero matrix, Mark=-1 when A or B or both = the zero matrix, Mark=-2 if A and B have been given as the answer in part(a) of the question*/</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-2-T</trueanswernote>
         <truefeedback format="html">
@@ -377,24 +376,24 @@ if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 el
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt2-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>-1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-3-T</trueanswernote>
         <truefeedback format="html">
@@ -402,24 +401,24 @@ if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 el
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>3</falsenextnode>
         <falseanswernote>prt2-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>-2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-4-T</trueanswernote>
         <truefeedback format="html">
@@ -427,11 +426,11 @@ if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 el
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-4-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -441,48 +440,48 @@ if (a=d and b=c) then Mark:-2 elseif (a=c and b=d) or a=c or b=d then Mark:-2 el
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text><![CDATA[a:a3A;
-b:a3B;
-if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else Mark:-1;
-
+        <text><![CDATA[a:a3A;
+b:a3B;
+if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else Mark:-1;
+
 /*Mark=1 when student inputs NA, Mark=0 when student gives matrices that does not multiply to give the zero maatrix, Mark=-1 for all other cases (rank of A and B <2) */]]></text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-2-T</trueanswernote>
         <truefeedback format="html">
@@ -490,24 +489,24 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prt3-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>Mark</sans>
         <tans>-1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-3-T</trueanswernote>
         <truefeedback format="html">
@@ -515,11 +514,11 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -529,37 +528,37 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>a4</sans>
         <tans>ta4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>a1A</name>
         <value>ta1A</value>
@@ -605,7 +604,7 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>a1A</name>
         <value>ta1A</value>
@@ -651,7 +650,7 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>a1A</name>
         <value>ta1A</value>
@@ -697,7 +696,7 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>a1A</name>
         <value>ta1A</value>
@@ -756,5 +755,4 @@ if (a=ta3A and b=ta3B) then Mark:1 elseif notequal(rank(a.b),0) then Mark:0 else
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-dot-product.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-dot-product.xml
index 3e00c3f41..11bb69fc3 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-dot-product.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-dot-product.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112263  -->
   <question type="stack">
     <name>
       <text>Dot product formula proof comprehension</text>
@@ -87,7 +86,7 @@
     <defaultgrade>3</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -99,8 +98,7 @@ ta32:2;
 ta33:1;
 ta34:2;
 ta35:1;
-ta36:5;
-]]></text>
+ta36:5;]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text><![CDATA[<div class="proof-line">
@@ -160,7 +158,7 @@ ta36:5;
 </div>]]></text>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="moodle_auto_format">
       <text>This question is distributed as part of the STACK source code as an example. This is licenced as Creative Commons Attribution-ShareAlike 4.0 International License.</text>
@@ -185,7 +183,7 @@ ta36:5;
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>dropdown</type>
@@ -193,16 +191,16 @@ ta36:5;
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans31</name>
@@ -211,16 +209,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans32</name>
@@ -229,16 +227,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans33</name>
@@ -247,16 +245,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans34</name>
@@ -265,16 +263,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans35</name>
@@ -283,16 +281,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans36</name>
@@ -301,16 +299,16 @@ ta36:5;
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -318,31 +316,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -352,31 +350,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans31</sans>
         <tans>ta31</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt31-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt31-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -386,31 +384,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans32</sans>
         <tans>ta32</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt32-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt32-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -420,31 +418,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans33</sans>
         <tans>ta33</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt33-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt33-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -454,31 +452,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans34</sans>
         <tans>ta34</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt34-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt34-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -488,31 +486,31 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans35</sans>
         <tans>ta35</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt35-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt35-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -522,37 +520,37 @@ ta36:5;
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans36</sans>
         <tans>ta36</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt36-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt36-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -625,5 +623,4 @@ ta36:5;
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-gaps-linear-dependence.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-gaps-linear-dependence.xml
index 7a6d32534..2f0aba6e8 100755
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-gaps-linear-dependence.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Proof-gaps-linear-dependence.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 112264  -->
   <question type="stack">
     <name>
       <text>Span proof</text>
@@ -57,12 +56,12 @@ May we assume that \(a,b,c\) are not all zero?
 </ol>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>6</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -139,7 +138,7 @@ For the direction \(U \subseteq W\).
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>dropdown</type>
@@ -147,10 +146,10 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -165,10 +164,10 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -183,10 +182,10 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -201,10 +200,10 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -219,10 +218,10 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -237,16 +236,16 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv11</name>
@@ -255,16 +254,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv12</name>
@@ -273,16 +272,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv13</name>
@@ -291,16 +290,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv21</name>
@@ -309,16 +308,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv22</name>
@@ -327,16 +326,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansv23</name>
@@ -345,16 +344,16 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansxd</name>
@@ -363,16 +362,16 @@ For the direction \(U \subseteq W\).
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansxd2</name>
@@ -381,10 +380,10 @@ For the direction \(U \subseteq W\).
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -398,31 +397,31 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>taa1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -432,31 +431,31 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>taa2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -466,31 +465,31 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans3</sans>
         <tans>taa3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -500,31 +499,31 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans4</sans>
         <tans>taa4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -534,31 +533,31 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans5</sans>
         <tans>taa5</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt5-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt5-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -568,27 +567,27 @@ For the direction \(U \subseteq W\).
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ansf1</sans>
         <tans>false</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtf1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtf1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -606,27 +605,27 @@ For the direction \(U \subseteq W\).
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa</sans>
         <tans>tav1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtv1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtv1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -640,54 +639,52 @@ For the direction \(U \subseteq W\).
 sa2:ev(expand(ansv21*(x+y)+ansv22*(y+z)+ansv23*(z+x)), simp);
 scx:ev(ratsimp(ansv21+ansv23),simp);
 scy:ev(ratsimp(ansv21+ansv22),simp);
-scz:ev(ratsimp(ansv22+ansv23),simp);
-
-</text>
+scz:ev(ratsimp(ansv22+ansv23),simp);</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa</sans>
         <tans>tav2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtv2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prtv2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>sa2</sans>
         <tans>a*x+b*y+c*z</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtv2-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtv2-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -706,62 +703,62 @@ so you must have done something wrong!</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ansxd</sans>
         <tans>taaxd</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prtxd-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtxd-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ansxd2</sans>
         <tans>3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtxd-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtxd-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>first(mcq_correct(ta1))</value>
@@ -875,54 +872,54 @@ so you must have done something wrong!</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans2</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans3</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans4</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ans5</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansf1</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv11</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv12</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv13</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv21</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv22</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansv23</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansxd</name>
@@ -930,54 +927,54 @@ so you must have done something wrong!</text>
       </testinput>
       <testinput>
         <name>ansxd2</name>
-        <value></value>
+        <value/>
       </testinput>
       <expected>
         <name>prt1</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt3</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt4</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prt5</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prtf1</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prtv1</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
         <name>prtv2</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
       <expected>
@@ -988,5 +985,4 @@ so you must have done something wrong!</text>
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/LinearAlgebra/Show-Ax-forms-a-subspace-Parsons.xml b/samplequestions/stacklibrary/Topics/LinearAlgebra/Show-Ax-forms-a-subspace-Parsons.xml
index 28497df70..a63a96cd7 100644
--- a/samplequestions/stacklibrary/Topics/LinearAlgebra/Show-Ax-forms-a-subspace-Parsons.xml
+++ b/samplequestions/stacklibrary/Topics/LinearAlgebra/Show-Ax-forms-a-subspace-Parsons.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 129900  -->
   <question type="stack">
     <name>
       <text>Drag/drop: forms a subspace</text>
@@ -20,7 +19,7 @@
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024072400</text>
     </stackversion>
@@ -51,8 +50,7 @@ ta2:proof(proof_c("ass1","cs1"),proof_c(proof("ca1","ca2","ca3","ca4"), proof("c
 /* Generate the alternative proofs. */
 tal:append(proof_alternatives(ta),proof_alternatives(ta2));
 /* Create a set of flattened proofs. */
-tas:setify(map(proof_flatten, tal));
-]]></text>
+tas:setify(map(proof_flatten, tal));]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
@@ -83,7 +81,7 @@ tas:setify(map(proof_flatten, tal));
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>string</type>
@@ -91,16 +89,16 @@ tas:setify(map(proof_flatten, tal));
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -113,23 +111,23 @@ tas:setify(map(proof_flatten, tal));
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>pd</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -157,5 +155,4 @@ tas:setify(map(proof_flatten, tal));
       </expected>
     </qtest>
   </question>
-
 </quiz>
diff --git a/samplequestions/stacklibrary/Topics/ODE_2nd_order_linear.xml b/samplequestions/stacklibrary/Topics/ODE_2nd_order_linear.xml
index bc47ef6bb..4cc71b959 100644
--- a/samplequestions/stacklibrary/Topics/ODE_2nd_order_linear.xml
+++ b/samplequestions/stacklibrary/Topics/ODE_2nd_order_linear.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12697  -->
   <question type="stack">
     <name>
       <text>ODE_2nd_order_linear_1</text>
@@ -9,12 +8,12 @@
       <text><![CDATA[<p>Find the general solution to \[ {@q@} =0 \] \(y(t) =\;  \)[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -58,7 +57,7 @@ ta:A*%e^(l1*t)+B*%e^(l2*t);</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -66,16 +65,16 @@ ta:A*%e^(l1*t)+B*%e^(l2*t);</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>1</requirelowestterms>
       <checkanswertype>1</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>Result</name>
@@ -104,19 +103,19 @@ m:float(m);</text>
         <answertest>AlgEquiv</answertest>
         <sans>p</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -129,19 +128,19 @@ m:float(m);</text>
         <answertest>AlgEquiv</answertest>
         <sans>lv</sans>
         <tans>2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.75</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -154,11 +153,11 @@ m:float(m);</text>
         <answertest>AlgEquiv</answertest>
         <sans>numberp(m)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
@@ -166,11 +165,11 @@ m:float(m);</text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>1</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -186,7 +185,7 @@ m:float(m);</text>
     <deployedseed>511077327</deployedseed>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta</value>
@@ -200,7 +199,7 @@ m:float(m);</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>%e^(l1*t)+%e^(l2*t)</value>
@@ -214,7 +213,7 @@ m:float(m);</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>sin(t)</value>
@@ -228,7 +227,7 @@ m:float(m);</text>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>A*B*%e^(l1*t)</value>
@@ -242,7 +241,7 @@ m:float(m);</text>
     </qtest>
     <qtest>
       <testcase>5</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>D*%e^(l1*t)+C*%e^(l2*t);</value>
@@ -255,5 +254,4 @@ m:float(m);</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Parsons-proof-template.xml b/samplequestions/stacklibrary/Topics/Parsons-proof-template.xml
index 61b1c56f8..5e1969761 100644
--- a/samplequestions/stacklibrary/Topics/Parsons-proof-template.xml
+++ b/samplequestions/stacklibrary/Topics/Parsons-proof-template.xml
@@ -1,66 +1,65 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 4482  -->
   <question type="stack">
     <name>
       <text>Parsons' proof template</text>
     </name>
     <questiontext format="html">
-      <text><![CDATA[<p>{@thm@}</p>
-[[parsons input="ans1"]]
-{# parsons_encode(proof_steps) #}
-[[/parsons ]]
+      <text><![CDATA[<p>{@thm@}</p>
+[[parsons input="ans1"]]
+{# parsons_encode(proof_steps) #}
+[[/parsons ]]
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text><![CDATA[[[comment]]
-This parsons' input will automatically feedback a model solution (the "teacher's answer") unless the input option 'hideanswer' is used or the PRT is on quiet respectively. 
-Below are examples of how to format the worked solutions using the proof_display functions.
-[[/comment]]
-
-[[if test='len1=2' ]]
-Notice this proof has sub-proofs, which can occur in any order.  Therefore, we have multiple correct versions of this proof. For example:
-<table><tr>
-<td><div class="proof">{@proof_display_para(tal[1], proof_steps)@}
-<td><div class="proof">{@proof_display_para(tal[2], proof_steps)@}
-</tr></table>
-Can you see the differences between these proofs?
-[[/if]]
-[[if test='len1>2' ]]
-{@proof_display_para(tal[1], proof_steps)@}
-[[/if]]
-[[if test='len1<2' ]]
-{@proof_display_para(tal[1], proof_steps)@}
+      <text><![CDATA[[[comment]]
+This parsons' input will automatically feedback a model solution (the "teacher's answer") unless the input option 'hideanswer' is used or the PRT is on quiet respectively. 
+Below are examples of how to format the worked solutions using the proof_display functions.
+[[/comment]]
+
+[[if test='len1=2' ]]
+Notice this proof has sub-proofs, which can occur in any order.  Therefore, we have multiple correct versions of this proof. For example:
+<table><tr>
+<td><div class="proof">{@proof_display_para(tal[1], proof_steps)@}
+<td><div class="proof">{@proof_display_para(tal[2], proof_steps)@}
+</tr></table>
+Can you see the differences between these proofs?
+[[/if]]
+[[if test='len1>2' ]]
+{@proof_display_para(tal[1], proof_steps)@}
+[[/if]]
+[[if test='len1<2' ]]
+{@proof_display_para(tal[1], proof_steps)@}
 [[/if]]]]></text>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
     <questionvariables>
-      <text><![CDATA[stack_include_contrib("prooflib.mac");
-
-/* STACK is distributed with a number of pre-written proofs.   See
-   https://github.com/maths/moodle-qtype_stack/tree/master/stack/maxima/contrib/proofsamples
-*/
-/* Load proof here, change `inf-primes.mac` for your chosen proof. */
-stack_include_contrib("proofsamples/inf-primes.mac");
-/*stack_include_contrib("proofsamples/harmonic-series.mac");*/
-
-/* The variable "proof_steps", etc., are defined in the above file.  Permute the steps randomly. */ 
-proof_steps: random_permutation(proof_steps);
-
-/* Generate the alternative proofs. */
-tal: proof_alternatives(proof_ans);
-len1: length(tal)
-/* Below is one "wrong" answer generated by sorting the correct answer keys. */
-wa1:apply(proof,sort(args(proof_flatten(tal[1]))));
-
-
-/* Create a set of flattened proofs. */
+      <text><![CDATA[stack_include_contrib("prooflib.mac");
+
+/* STACK is distributed with a number of pre-written proofs.   See
+   https://github.com/maths/moodle-qtype_stack/tree/master/stack/maxima/contrib/proofsamples
+*/
+/* Load proof here, change `inf-primes.mac` for your chosen proof. */
+stack_include_contrib("proofsamples/inf-primes.mac");
+/*stack_include_contrib("proofsamples/harmonic-series.mac");*/
+
+/* The variable "proof_steps", etc., are defined in the above file.  Permute the steps randomly. */ 
+proof_steps: random_permutation(proof_steps);
+
+/* Generate the alternative proofs. */
+tal: proof_alternatives(proof_ans);
+len1: length(tal)
+/* Below is one "wrong" answer generated by sorting the correct answer keys. */
+wa1:apply(proof,sort(args(proof_flatten(tal[1]))));
+
+
+/* Create a set of flattened proofs. */
 tas: setify(map(proof_flatten, tal));]]></text>
     </questionvariables>
     <specificfeedback format="html">
@@ -70,9 +69,9 @@ tas: setify(map(proof_flatten, tal));]]></text>
       <text>{@ map(first, proof_steps) @}</text>
     </questionnote>
     <questiondescription format="html">
-      <text>This question is a template for importing proofs from the STACK contrib directory.  See
-https://github.com/maths/moodle-qtype_stack/tree/master/stack/maxima/contrib/proofsamples
-
+      <text>This question is a template for importing proofs from the STACK contrib directory.  See
+https://github.com/maths/moodle-qtype_stack/tree/master/stack/maxima/contrib/proofsamples
+
 It also demonstrates how to create sample Parsons problems.  In particular, how to use the Parsons function to give tailored feedback about what stages are incorrect.</text>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
@@ -95,7 +94,7 @@ It also demonstrates how to create sample Parsons problems.  In particular, how
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>parsons</type>
@@ -103,16 +102,16 @@ It also demonstrates how to create sample Parsons problems.  In particular, how
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -120,28 +119,28 @@ It also demonstrates how to create sample Parsons problems.  In particular, how
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text>sa: parsons_decode(ans1);
+        <text>sa: parsons_decode(ans1);
 [pd, saa]:proof_assessment(sa, proof_alternatives(proof_ans));</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>pd</sans>
         <tans>0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -184,5 +183,4 @@ It also demonstrates how to create sample Parsons problems.  In particular, how
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_infinite_primes.xml b/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_infinite_primes.xml
index c6d81d08e..dccd28a14 100755
--- a/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_infinite_primes.xml
+++ b/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_infinite_primes.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 2551  -->
   <question type="stack">
     <name>
       <text>W6 Q6 PC (Infinitely many primes)</text>
@@ -14,7 +13,7 @@
 <tr><td>1.</td><td nowrap>Suppose there are only finitely many primes, label them \(p_1 = 2 < p_2 = 3 < \cdots < p_n\).</td></tr>
 <tr><td>2.</td><td nowrap>Let \(N = p_1p_2\cdots p_n +1\).</td></tr>
 <tr><td>3.</td><td nowrap>Then \(N\) is an integer greater than each of \(p_1, \dots, p_n\), thus \(N\) cannot be prime. </td></tr>
-<tr><td>4.</td><td nowrap>Thus we can write \(N\) as a product of primes. /* say \(N  = q_1q_2 \cdots q_m\) where \(q_1, \dots, q_m\) are prime. */</td></tr>
+<tr><td>4.</td><td nowrap>Thus we can write \(N\) as a product of primes.</td></tr>
 <tr><td>5.</td><td nowrap>Hence there is some prime \(p\) which divides \(N\). </td></tr>
 <tr><td>6.</td><td nowrap>\(p\) can not be any of the \(p_1, \dots p_n\) otherwise \(p\) would divide the difference \(N - p_1 p_2 \cdots p_n = \) [[validation:ans0]] [[input:ans0]]  which cannot happen.</td><td>[[feedback:prt0]]</td></tr>
 <tr><td>7.</td><td nowrap>Thus \(p\) must be a new prime and our initial list \(p_1,p_2,\dots, p_n\) is not an exhaustive list of the primes. </td></tr>
@@ -42,9 +41,9 @@ The aim of the proof is to show a contradiction to line 1, which is accomplished
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
-      <text>2021120900</text>
+      <text>2024111900</text>
     </stackversion>
     <questionvariables>
       <text><![CDATA[tacp:[[A, false, "A. Direct proof"],  [B, false, "B. Definition-chasing"], [C, false, "C. If and only if"], [D, false, "D. Exhaustive cases"], [E, false, "E. Induction"], [F, false, "F. Contrapositive"], [G, true, "G. Contradiction"]];
@@ -55,13 +54,13 @@ ta2:1;
 ta3:matrix([1,7]);]]></text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -83,7 +82,7 @@ ta3:matrix([1,7]);]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans0</name>
       <type>algebraic</type>
@@ -91,16 +90,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>5</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans1</name>
@@ -109,16 +108,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -127,16 +126,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -145,16 +144,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>3</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>2</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -163,16 +162,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>50</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ansp</name>
@@ -181,16 +180,16 @@ ta3:matrix([1,7]);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt0</name>
@@ -198,31 +197,31 @@ ta3:matrix([1,7]);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans0</sans>
         <tans>ta0</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
-        <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truescore>1</truescore>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt0-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
-        <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsescore>0</falsescore>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt0-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -232,31 +231,31 @@ ta3:matrix([1,7]);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
-        <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truescore>1</truescore>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
-        <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsescore>0</falsescore>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -266,31 +265,31 @@ ta3:matrix([1,7]);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
-        <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truescore>1</truescore>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
-        <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsescore>0</falsescore>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -304,27 +303,27 @@ ta3:matrix([1,7]);]]></text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>Sets</answertest>
         <sans>sa</sans>
         <tans>setify(args(ta3))</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
-        <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truescore>1</truescore>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
-        <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsescore>0</falsescore>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -334,37 +333,37 @@ ta3:matrix([1,7]);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ansp</sans>
         <tans>taa</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
-        <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truescore>1</truescore>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtp-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
-        <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsescore>0</falsescore>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtp-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
         <value>ta0</value>
@@ -383,7 +382,7 @@ ta3:matrix([1,7]);]]></text>
       </testinput>
       <testinput>
         <name>ans4</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansp</name>
@@ -422,7 +421,7 @@ ta3:matrix([1,7]);]]></text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
         <value>ta0-1</value>
@@ -441,7 +440,7 @@ ta3:matrix([1,7]);]]></text>
       </testinput>
       <testinput>
         <name>ans4</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansp</name>
@@ -480,7 +479,7 @@ ta3:matrix([1,7]);]]></text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans0</name>
         <value>ta0</value>
@@ -499,7 +498,7 @@ ta3:matrix([1,7]);]]></text>
       </testinput>
       <testinput>
         <name>ans4</name>
-        <value></value>
+        <value/>
       </testinput>
       <testinput>
         <name>ansp</name>
@@ -537,5 +536,4 @@ ta3:matrix([1,7]);]]></text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_roots_unity.xml b/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_roots_unity.xml
index 59766eb27..3d2e718ef 100755
--- a/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_roots_unity.xml
+++ b/samplequestions/stacklibrary/Topics/Proof/Proof_comprehension_roots_unity.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 2515  -->
   <question type="stack">
     <name>
       <text>W5 Q9 PC (Roots of unity)</text>
@@ -62,7 +61,7 @@ Steps 1. to 5. show the forwards direction and steps 6. to 8. show the backwards
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2020020300</text>
     </stackversion>
@@ -79,13 +78,13 @@ tal4: [[A, false, "A. The proof is a proof by contradiction."], [B, false, "B. T
 ta4:mcq_correct(tal4);]]></text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -107,7 +106,7 @@ ta4:mcq_correct(tal4);]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -115,16 +114,16 @@ ta4:mcq_correct(tal4);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -133,16 +132,16 @@ ta4:mcq_correct(tal4);]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -151,16 +150,16 @@ ta4:mcq_correct(tal4);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -169,16 +168,16 @@ ta4:mcq_correct(tal4);]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -186,31 +185,31 @@ ta4:mcq_correct(tal4);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -220,31 +219,31 @@ ta4:mcq_correct(tal4);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -254,31 +253,31 @@ ta4:mcq_correct(tal4);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt3-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt3-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -288,37 +287,37 @@ ta4:mcq_correct(tal4);]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans4</sans>
         <tans>ta4</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt4-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt4-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -362,7 +361,7 @@ ta4:mcq_correct(tal4);]]></text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>r^n*e^(n*i*theta)</value>
@@ -405,5 +404,4 @@ ta4:mcq_correct(tal4);]]></text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Proof/Proof_gaps_induction_series.xml b/samplequestions/stacklibrary/Topics/Proof/Proof_gaps_induction_series.xml
index e4871737a..627db29c4 100755
--- a/samplequestions/stacklibrary/Topics/Proof/Proof_gaps_induction_series.xml
+++ b/samplequestions/stacklibrary/Topics/Proof/Proof_gaps_induction_series.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 2439  -->
   <question type="stack">
     <name>
       <text>Q02 Q8 Proof by induction (general) sum (2k-1)^3  = n^2(2n^2-1)</text>
@@ -63,7 +62,7 @@ At this point the goal is to algebraically manipulate your expression so that yo
     <defaultgrade>5</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2023010400</text>
     </stackversion>
@@ -85,13 +84,13 @@ ta4:[[A, false, "(algebraic simplification)"], [B, true, "(by the induction hypo
 ta5:rh1;]]></text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="moodle_auto_format">
       <text>{@pn@}</text>
     </questionnote>
     <questiondescription format="moodle_auto_format">
-      <text></text>
+      <text/>
     </questiondescription>
     <questionsimplify>0</questionsimplify>
     <assumepositive>0</assumepositive>
@@ -113,7 +112,7 @@ ta5:rh1;]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>numerical</type>
@@ -121,16 +120,16 @@ ta5:rh1;]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans2</name>
@@ -139,16 +138,16 @@ ta5:rh1;]]></text>
       <boxsize>5</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans3</name>
@@ -159,14 +158,14 @@ ta5:rh1;]]></text>
       <insertstars>4</insertstars>
       <syntaxhint>sum(?,k,1,n)+?</syntaxhint>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans4</name>
@@ -175,16 +174,16 @@ ta5:rh1;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>0</mustverify>
       <showvalidation>0</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <input>
       <name>ans5</name>
@@ -193,16 +192,16 @@ ta5:rh1;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>4</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>3</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prtbase</name>
@@ -210,44 +209,44 @@ ta5:rh1;]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>EqualComAss</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prtbase-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prtbase-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prtbase-2-T</trueanswernote>
         <truefeedback format="html">
@@ -255,49 +254,49 @@ ta5:rh1;]]></text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prtbase-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>EqualComAss</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtbase-3-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>3</falsenextnode>
         <falseanswernote>prtbase-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>3</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtbase-4-T</trueanswernote>
         <truefeedback format="html">
@@ -305,11 +304,11 @@ ta5:rh1;]]></text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtbase-4-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -319,28 +318,27 @@ ta5:rh1;]]></text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text>A3:if atom(ans3) then {} else setify(args(ans3));
-</text>
+        <text>A3:if atom(ans3) then {} else setify(args(ans3));</text>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>elementp('sum(ak,k,1,n),A3)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prtind-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prtind-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -349,40 +347,40 @@ ta5:rh1;]]></text>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>EqualComAss</answertest>
         <sans>ans3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtind-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>2</falsenextnode>
         <falseanswernote>prtind-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>2</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtind-3-T</trueanswernote>
         <truefeedback format="html">
@@ -390,11 +388,11 @@ ta5:rh1;]]></text>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtind-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -404,27 +402,27 @@ ta5:rh1;]]></text>
       <autosimplify>0</autosimplify>
       <feedbackstyle>2</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans5</sans>
         <tans>ta5</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtind2-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtind2-1-F</falseanswernote>
         <falsefeedback format="html">
@@ -438,37 +436,37 @@ ta5:rh1;]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>3</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans4</sans>
         <tans>B</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prtindjustify-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prtindjustify-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta1</value>
@@ -518,5 +516,4 @@ ta5:rh1;]]></text>
       <text>Incorrect answer.</text>
     </hint>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Topics_units_basic.xml b/samplequestions/stacklibrary/Topics/Topics_units_basic.xml
index 51a2eaa03..ac59c3892 100644
--- a/samplequestions/stacklibrary/Topics/Topics_units_basic.xml
+++ b/samplequestions/stacklibrary/Topics/Topics_units_basic.xml
@@ -1,57 +1,55 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 4503  -->
   <question type="stack">
     <name>
       <text>Scientific units template</text>
     </name>
     <questiontext format="moodle_auto_format">
-      <text><![CDATA[<p>You run {@d@} in {@t@}.  What is your average speed?</p>
-<p>[[input:ans1]] [[validation:ans1]]</p>
+      <text><![CDATA[<p>You run {@d@} in {@t@}.  What is your average speed?</p>
+<p>[[input:ans1]] [[validation:ans1]]</p>
 <p>Please give your answer to \(4\) significant figures.</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
     <questionvariables>
-      <text><![CDATA[/* This loads scientific units. */
-stack_unit_si_declare(true);
-
-/* We have an inert function to represent dimensional quantities. */
-d:stackunits(100.0, m);
-t:stackunits(9.59,s);
-/* We can't use d/t directly, because we can't calculate with units. */
-/* Instead, we turn the intert function into a product, then re-make the result. */
-ta1:stackunits_make(ev(d/t,stackunits="*"));
-
-/* Note the above is a raw calculation, but does not give a teacher's answer with the
-   correct number of significant figures.  */
-ta:stackunits(dispsf(stack_units_nums(ta1), 4), stack_units_units(ta1));
-
-/* Uses compatible units. (Just an example) */
-ta2:stackunits(dispsf(stack_units_nums(ta1/1000), 4), km/m*stack_units_units(ta1));
-]]></text>
+      <text><![CDATA[/* This loads scientific units. */
+stack_unit_si_declare(true);
+
+/* We have an inert function to represent dimensional quantities. */
+d:stackunits(100.0, m);
+t:stackunits(9.59,s);
+/* We can't use d/t directly, because we can't calculate with units. */
+/* Instead, we turn the intert function into a product, then re-make the result. */
+ta1:stackunits_make(ev(d/t,stackunits="*"));
+
+/* Note the above is a raw calculation, but does not give a teacher's answer with the
+   correct number of significant figures.  */
+ta:stackunits(dispsf(stack_units_nums(ta1), 4), stack_units_units(ta1));
+
+/* Uses compatible units. (Just an example) */
+ta2:stackunits(dispsf(stack_units_nums(ta1/1000), 4), km/m*stack_units_units(ta1));]]></text>
     </questionvariables>
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
     </specificfeedback>
     <questionnote format="html">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="markdown">
-      <text><![CDATA[This is a sample question using basic scientific units.
-
-1. Note the calculations with units in the question variables.
-2. This uses the "units" inputs, with some options.
-3. The PRT uses a numerical units answer test.
-
+      <text><![CDATA[This is a sample question using basic scientific units.
+
+1. Note the calculations with units in the question variables.
+2. This uses the "units" inputs, with some options.
+3. The PRT uses a numerical units answer test.
+
 Note some of the feedback in the question tests.]]></text>
     </questiondescription>
     <questionsimplify>1</questionsimplify>
@@ -74,7 +72,7 @@ Note some of the feedback in the question tests.]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>units</type>
@@ -82,10 +80,10 @@ Note some of the feedback in the question tests.]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>0</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -99,7 +97,7 @@ Note some of the feedback in the question tests.]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
@@ -111,19 +109,19 @@ Note some of the feedback in the question tests.]]></text>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -150,8 +148,8 @@ Note some of the feedback in the question tests.]]></text>
       </testinput>
       <expected>
         <name>prt1</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
@@ -164,14 +162,14 @@ Note some of the feedback in the question tests.]]></text>
       </testinput>
       <expected>
         <name>prt1</name>
-        <expectedscore></expectedscore>
-        <expectedpenalty></expectedpenalty>
+        <expectedscore/>
+        <expectedpenalty/>
         <expectedanswernote>NULL</expectedanswernote>
       </expected>
     </qtest>
     <qtest>
       <testcase>4</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta2</value>
@@ -184,5 +182,4 @@ Note some of the feedback in the question tests.]]></text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/Vector-Calculus.xml b/samplequestions/stacklibrary/Topics/Vector-Calculus.xml
index ad5639964..044eb8f56 100644
--- a/samplequestions/stacklibrary/Topics/Vector-Calculus.xml
+++ b/samplequestions/stacklibrary/Topics/Vector-Calculus.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12694  -->
   <question type="stack">
     <name>
       <text>Vector Calculus</text>
@@ -39,7 +38,7 @@ f &amp; g &amp; h
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -66,7 +65,7 @@ ta3: curl(f,vars);
 ta4: EMPTYANSWER;]]></text>
     </questionvariables>
     <specificfeedback format="html">
-      <text></text>
+      <text/>
     </specificfeedback>
     <questionnote format="html">
       <text>\[ \mathbf{F}(x,y,z) = {@f@}\] \[ \mathbf{\nabla} \cdot \mathbf{F} = {@ta2@}\] \[ \mathbf{\nabla} \times \mathbf{F} ={@ta3@}\]</text>
@@ -94,7 +93,7 @@ ta4: EMPTYANSWER;]]></text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>matrix</type>
@@ -102,10 +101,10 @@ ta4: EMPTYANSWER;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -120,10 +119,10 @@ ta4: EMPTYANSWER;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -138,10 +137,10 @@ ta4: EMPTYANSWER;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -156,10 +155,10 @@ ta4: EMPTYANSWER;]]></text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
@@ -173,19 +172,19 @@ ta4: EMPTYANSWER;]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans2</sans>
         <tans>ta2</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
@@ -193,11 +192,11 @@ ta4: EMPTYANSWER;]]></text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
@@ -206,19 +205,19 @@ ta4: EMPTYANSWER;]]></text>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>matrix([null],[null],[null])</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -232,19 +231,19 @@ ta4: EMPTYANSWER;]]></text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans3</sans>
         <tans>ta3</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt2-1-T</trueanswernote>
         <truefeedback format="html">
@@ -252,32 +251,32 @@ ta4: EMPTYANSWER;]]></text>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt2-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans4</sans>
         <tans>EMPTYANSWER</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>1</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt2-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt2-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -318,15 +317,14 @@ ta4: EMPTYANSWER;]]></text>
         <name>prt1</name>
         <expectedscore>1.0000000</expectedscore>
         <expectedpenalty>0.0000000</expectedpenalty>
-        <expectedanswernote>prt1-1-T</expectedanswernote>
+        <expectedanswernote>prt1-2-T</expectedanswernote>
       </expected>
       <expected>
         <name>prt2</name>
         <expectedscore>1.0000000</expectedscore>
         <expectedpenalty>0.0000000</expectedpenalty>
-        <expectedanswernote>prt2-1-T</expectedanswernote>
+        <expectedanswernote>prt2-2-T</expectedanswernote>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/equivalence_reasoning_example.xml b/samplequestions/stacklibrary/Topics/equivalence_reasoning_example.xml
index dc913d7d3..523e33575 100644
--- a/samplequestions/stacklibrary/Topics/equivalence_reasoning_example.xml
+++ b/samplequestions/stacklibrary/Topics/equivalence_reasoning_example.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 702  -->
   <question type="stack">
     <name>
       <text>stack_equiv_find_step(ex, ex1) example</text>
@@ -10,12 +9,12 @@
 <p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="html">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2018120500</text>
     </stackversion>
@@ -25,9 +24,12 @@
     <specificfeedback format="html">
       <text>[[feedback:prt1]]</text>
     </specificfeedback>
-    <questionnote>
+    <questionnote format="html">
       <text>{@ta@}</text>
     </questionnote>
+    <questiondescription format="html">
+      <text/>
+    </questiondescription>
     <questionsimplify>0</questionsimplify>
     <assumepositive>0</assumepositive>
     <assumereal>1</assumereal>
@@ -41,12 +43,14 @@
       <text><![CDATA[<span style="font-size: 1.5em; color:red;"><i class="fa fa-times"></i></span> Incorrect answer.]]></text>
     </prtincorrect>
     <decimals>.</decimals>
+    <scientificnotation>*10</scientificnotation>
     <multiplicationsign>cross</multiplicationsign>
     <sqrtsign>1</sqrtsign>
     <complexno>i</complexno>
     <inversetrig>cos-1</inversetrig>
+    <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>equiv</type>
@@ -56,64 +60,67 @@
       <insertstars>0</insertstars>
       <syntaxhint>firstline</syntaxhint>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>2</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
       <value>1.0000000</value>
       <autosimplify>0</autosimplify>
+      <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
         <text>w1:stack_equiv_find_step(lg(5^2,5), ans1)</text>
       </feedbackvariables>
       <node>
         <name>0</name>
+        <description/>
         <answertest>EquivFirst</answertest>
         <sans>ans1</sans>
         <tans>ta</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>0.5000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
+        <description/>
         <answertest>EqualComAss</answertest>
         <sans>last(ans1)</sans>
         <tans>last(ta)</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.5000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>2</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
@@ -122,14 +129,15 @@
       </node>
       <node>
         <name>2</name>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>emptyp(w1)</sans>
         <tans>true</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>0.0000000</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-3-T</trueanswernote>
         <truefeedback format="html">
@@ -137,16 +145,17 @@
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0.0000000</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-3-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
     <qtest>
       <testcase>1</testcase>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>ta</value>
@@ -160,6 +169,7 @@
     </qtest>
     <qtest>
       <testcase>2</testcase>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[lg(25,5),stackeq(lg(5^2,5)),stackeq(2*lg(5,5)),stackeq(2*1)]</value>
@@ -173,6 +183,7 @@
     </qtest>
     <qtest>
       <testcase>3</testcase>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>[lg(25,5),stackeq(2)]</value>
@@ -185,5 +196,4 @@
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
diff --git a/samplequestions/stacklibrary/Topics/plot-Discrete_mathematics_graph_theory-1.xml b/samplequestions/stacklibrary/Topics/plot-Discrete_mathematics_graph_theory-1.xml
index a345e374f..43a283b7e 100644
--- a/samplequestions/stacklibrary/Topics/plot-Discrete_mathematics_graph_theory-1.xml
+++ b/samplequestions/stacklibrary/Topics/plot-Discrete_mathematics_graph_theory-1.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <quiz>
-<!-- question: 12704  -->
   <question type="stack">
     <name>
       <text><![CDATA[Discrete mathematics & graph theory - 1 -plot()]]></text>
@@ -11,12 +10,12 @@
 </p><p>[[input:ans1]] [[validation:ans1]]</p>]]></text>
     </questiontext>
     <generalfeedback format="moodle_auto_format">
-      <text></text>
+      <text/>
     </generalfeedback>
     <defaultgrade>1</defaultgrade>
     <penalty>0.1</penalty>
     <hidden>0</hidden>
-    <idnumber></idnumber>
+    <idnumber/>
     <stackversion>
       <text>2024092500</text>
     </stackversion>
@@ -40,7 +39,7 @@ ta1b: C5</text>
       <text>[[feedback:prt1]]</text>
     </specificfeedback>
     <questionnote format="html">
-      <text></text>
+      <text/>
     </questionnote>
     <questiondescription format="html">
       <text>This is a graph theory which illustrates maxima's plot function. This is the question outlined in the `discrete maths and graph theory` page of mathematical topics in the documentation. This can be found on your server at `[YOUR SERVER ADDRESS]/question/type/stack/doc/doc.php/Topics/Discrete_mathematics.md`. More info about `plot()` can be found at  `[YOUR SERVER ADDRESS]/question/type/stack/doc/doc.php//Plots/Plots/`, but note that maxima plot function is not actively updated, in favour of JSX graphs support.</text>
@@ -65,7 +64,7 @@ ta1b: C5</text>
     <inversetrig>cos-1</inversetrig>
     <logicsymbol>lang</logicsymbol>
     <matrixparens>[</matrixparens>
-    <variantsselectionseed></variantsselectionseed>
+    <variantsselectionseed/>
     <input>
       <name>ans1</name>
       <type>algebraic</type>
@@ -73,16 +72,16 @@ ta1b: C5</text>
       <boxsize>15</boxsize>
       <strictsyntax>1</strictsyntax>
       <insertstars>0</insertstars>
-      <syntaxhint></syntaxhint>
+      <syntaxhint/>
       <syntaxattribute>0</syntaxattribute>
-      <forbidwords></forbidwords>
-      <allowwords></allowwords>
+      <forbidwords/>
+      <allowwords/>
       <forbidfloat>1</forbidfloat>
       <requirelowestterms>0</requirelowestterms>
       <checkanswertype>0</checkanswertype>
       <mustverify>1</mustverify>
       <showvalidation>1</showvalidation>
-      <options></options>
+      <options/>
     </input>
     <prt>
       <name>prt1</name>
@@ -90,56 +89,56 @@ ta1b: C5</text>
       <autosimplify>1</autosimplify>
       <feedbackstyle>1</feedbackstyle>
       <feedbackvariables>
-        <text></text>
+        <text/>
       </feedbackvariables>
       <node>
         <name>0</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>=</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-1-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>=</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>1</falsenextnode>
         <falseanswernote>prt1-1-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
       <node>
         <name>1</name>
-        <description></description>
+        <description/>
         <answertest>AlgEquiv</answertest>
         <sans>ans1</sans>
         <tans>ta1b</tans>
-        <testoptions></testoptions>
+        <testoptions/>
         <quiet>0</quiet>
         <truescoremode>+</truescoremode>
         <truescore>1</truescore>
-        <truepenalty></truepenalty>
+        <truepenalty/>
         <truenextnode>-1</truenextnode>
         <trueanswernote>prt1-2-T</trueanswernote>
         <truefeedback format="html">
-          <text></text>
+          <text/>
         </truefeedback>
         <falsescoremode>-</falsescoremode>
         <falsescore>0</falsescore>
-        <falsepenalty></falsepenalty>
+        <falsepenalty/>
         <falsenextnode>-1</falsenextnode>
         <falseanswernote>prt1-2-F</falseanswernote>
         <falsefeedback format="html">
-          <text></text>
+          <text/>
         </falsefeedback>
       </node>
     </prt>
@@ -159,7 +158,7 @@ ta1b: C5</text>
     </qtest>
     <qtest>
       <testcase>2</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>C5</value>
@@ -173,7 +172,7 @@ ta1b: C5</text>
     </qtest>
     <qtest>
       <testcase>3</testcase>
-      <description></description>
+      <description/>
       <testinput>
         <name>ans1</name>
         <value>C_6</value>
@@ -186,5 +185,4 @@ ta1b: C5</text>
       </expected>
     </qtest>
   </question>
-
-</quiz>
\ No newline at end of file
+</quiz>
-- 
GitLab