diff --git a/config/cruisecontrol/version-2.6.1/config.xml b/config/cruisecontrol/version-2.6.1/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2c4b43399e835eb95eb782ef28e8a57b8c88f4c
--- /dev/null
+++ b/config/cruisecontrol/version-2.6.1/config.xml
@@ -0,0 +1,104 @@
+<cruisecontrol>
+  <property name="project.trunk" value="projects/cisd/trunk/${project.name}"/>
+  <property name="status.file" value="status.txt"/>
+  <property name="quiet-period" value="120"/>
+  
+  <plugin name="project" buildafterfailed="false">
+    <listeners>
+      <currentbuildstatuslistener file="logs/${project.name}/${status.file}"/>
+    </listeners>
+    <bootstrappers>
+      <svnbootstrapper localWorkingCopy="${project.trunk}"/>
+    </bootstrappers>
+    <modificationset>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+    <schedule interval="60">
+      <ant buildfile="${project.trunk}/build/build.xml" target="ci" anthome="apache-ant-1.6.5"/>
+    </schedule>
+    <log>
+      <merge dir="${project.trunk}/targets/test-output"/>
+    </log>
+    <publishers>
+      <onsuccess>
+        <artifactspublisher dest="artifacts/${project.name}" dir="${project.trunk}/targets/dist/"/>
+      </onsuccess>
+      <onfailure>
+        <email mailhost="localhost">
+          <map address="cisd-group@systemsx.ch"/>
+        </email>
+      </onfailure>
+    </publishers>
+  </plugin>
+  
+  <!-- Projects -->
+  
+  <project name="build_resources">
+    <schedule>
+      <ant target="_dummy" buildfile="${project.trunk}/ant/build-common.xml"/>
+    </schedule>
+  </project>
+  
+  <project name="libraries">
+    <schedule>
+      <ant target="_dummy" buildfile="${project.trunk}/build.xml"/>
+    </schedule>
+  </project>
+  
+  <project name="common">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+  <project name="authentication">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <buildstatus logdir="logs/common"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+  <project name="dbmigration">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <buildstatus logdir="logs/common"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+  <project name="datamover">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <buildstatus logdir="logs/common"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+  <project name="lims_base">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <buildstatus logdir="logs/common"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+  <project name="lims">
+    <modificationset quietperiod="${quiet-period}">
+      <buildstatus logdir="logs/build_resources"/>
+      <buildstatus logdir="logs/libraries"/>
+      <buildstatus logdir="logs/common"/>
+      <buildstatus logdir="logs/authentication"/>
+      <buildstatus logdir="logs/dbmigration"/>
+      <buildstatus logdir="logs/lims_base"/>
+      <svn localWorkingCopy="${project.trunk}"/>
+    </modificationset>
+  </project>
+  
+</cruisecontrol>
\ No newline at end of file
diff --git a/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/testdetails.xsl b/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/testdetails.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..584f0b167ddc8cbb6286bf50f567900e92f6d410
--- /dev/null
+++ b/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/testdetails.xsl
@@ -0,0 +1,267 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+<!--********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 200 E. Randolph, 25th Floor
+ * Chicago, IL 60601 USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *     + Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *
+ *     + Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *
+ *     + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
+ *       names of its contributors may be used to endorse or promote
+ *       products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ********************************************************************************-->
+  <xsl:output method="html" encoding="UTF-8" indent="yes"/>
+  <xsl:decimal-format decimal-separator="." grouping-separator="," />
+
+  <!-- 
+    Root template
+  -->
+  <xsl:template match="/">
+        <script type="text/javascript" language="JavaScript">
+          <!--
+            Function show/hide given div
+          -->
+          function toggleDivVisibility(_div) {
+            if (_div.style.display=="none") {
+              _div.style.display="block";
+            } else {
+              _div.style.display="none";
+            }
+          }
+        </script>
+           
+        <!-- Main table -->
+        <table border="0" cellspacing="0" width="100%">
+          <colgroup>
+            <col width="10%"/>
+            <col width="45%"/>
+            <col width="25%"/>
+            <col width="10%"/>
+            <col width="10%"/>
+          </colgroup>
+          <tr valign="top" class="unittests-sectionheader" align="left">
+            <th colspan="3">Name</th>
+            <th>Status</th>
+            <th nowrap="nowrap">Time(s)</th>
+          </tr>
+
+          <!-- display test suites -->
+          <xsl:apply-templates select="//testsuite">
+            <xsl:sort select="count(testcase/error)" data-type="number" order="descending"/>
+            <xsl:sort select="count(testcase/failure)" data-type="number" order="descending"/>
+            <xsl:sort select="@package"/>
+            <xsl:sort select="@name"/>
+          </xsl:apply-templates>
+
+        </table>
+    
+  </xsl:template>
+  
+  <!--
+    Test Suite Template
+    Construct TestSuite section
+  -->
+  <xsl:template match="testsuite">
+    <tr>
+      <xsl:attribute name="class">
+        <xsl:choose>
+          <xsl:when test="testcase/error">unittests-error-title</xsl:when>
+          <xsl:when test="testcase/failure">unittests-failure-title</xsl:when>
+          <xsl:otherwise>unittests-title</xsl:otherwise>
+        </xsl:choose>
+      </xsl:attribute>
+      <td colspan="5"><xsl:value-of select="concat(@package,'.',@name)"/></td>
+    </tr>
+    <!-- Display tests -->
+    <xsl:apply-templates select="testcase"/>
+    <!-- Display details links -->
+    <xsl:apply-templates select="current()" mode="details"/>
+  </xsl:template>
+  
+  <!--
+    Testcase template
+    Construct testcase section
+  -->
+  <xsl:template match="testcase">
+    <tr>
+      <xsl:attribute name="class">
+        <xsl:choose>
+          <xsl:when test="error">unittests-error</xsl:when>
+          <xsl:when test="failure">unittests-failure</xsl:when>
+          <xsl:otherwise>unittests-data</xsl:otherwise>
+        </xsl:choose>
+      </xsl:attribute>
+      <xsl:if test="position() mod 2 = 0">
+        <xsl:attribute name="bgcolor">#EEEEEE</xsl:attribute>
+      </xsl:if>
+      <td>&#xA0;</td>
+      <td colspan="2">
+        <xsl:value-of select="@classname"/>.<xsl:value-of select="@name"/>
+      </td>
+      <td>
+        <xsl:choose>
+          <xsl:when test="error">
+            <a href="javascript:void(0)"
+               onClick="toggleDivVisibility(document.getElementById('{concat('error.',../@package,'.',../@name,'.',@name)}'))">Error &#187;</a>
+          </xsl:when>
+          <xsl:when test="failure">
+            <a href="javascript:void(0)"
+               onClick="toggleDivVisibility(document.getElementById('{concat('failure.',../@package,'.',../@name,'.',@name)}'))">Failure &#187;</a>
+          </xsl:when>
+          <xsl:otherwise>Success</xsl:otherwise>
+        </xsl:choose>
+      </td>
+      <xsl:choose>
+        <xsl:when test="not(failure|error)">
+          <td>
+            <xsl:value-of select="format-number(@time,'0.000')"/>
+          </td>
+        </xsl:when>
+        <xsl:otherwise>
+          <td/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </tr>
+    <xsl:if test="error">
+      <tr>
+        <td colspan="5">
+          <div id="{concat('error.',../@package,'.',../@name,'.',@name)}" class="testresults-output-div" style="display: none;">
+            <span style="font-weight:bold">Error:</span><br/>
+            <xsl:apply-templates select="error/text()" mode="newline-to-br"/>
+          </div>
+        </td>
+      </tr>
+    </xsl:if>
+    <xsl:if test="failure">
+      <tr>
+        <td colspan="5">
+          <div id="{concat('failure.',../@package,'.',../@name,'.',@name)}" class="testresults-output-div" style="display: none;">
+            <span style="font-weight:bold">Failure:</span><br/>
+            <xsl:apply-templates select="failure/text()" mode="newline-to-br"/>
+          </div>
+        </td>
+      </tr>
+    </xsl:if>
+  </xsl:template>
+  
+  <!--
+    Display Properties and Output links
+    and construct hidden div's with data
+  -->
+  <xsl:template match="testsuite" mode="details">
+    <tr class="unittests-data">
+      <td colspan="2">
+        <xsl:if test="count(properties/property)&gt;0">
+          <a href="javascript:void(0)" onClick="toggleDivVisibility(document.getElementById('{concat('properties.',@package,'.',@name)}'))">Properties &#187;</a>
+        </xsl:if>&#xA0;
+      </td>
+      <td>
+        <xsl:if test="system-out/text()">
+          <a href="javascript:void(0)" onClick="toggleDivVisibility(document.getElementById('{concat('system_out.',@package,'.',@name)}'))">System.out &#187;</a>
+        </xsl:if>&#xA0;
+      </td>
+      <td>
+        <xsl:if test="system-err/text()">
+          <a href="javascript:void(0)" onClick="toggleDivVisibility(document.getElementById('{concat('system_err.',@package,'.',@name)}'))">System.err &#187;</a>
+        </xsl:if>&#xA0;
+      </td>
+      <td>&#xA0;</td>
+    </tr>
+    <tr>
+      <td colspan="5">
+        <!-- Construct details div's -->
+        <!-- System Error -->
+        <xsl:apply-templates select="system-err" mode="system-err-div">
+          <xsl:with-param name="div-id" select="concat('system_err.',@package,'.',@name)"/>
+        </xsl:apply-templates>
+        <!-- System Output -->
+        <xsl:apply-templates select="system-out" mode="system-out-div">
+          <xsl:with-param name="div-id" select="concat('system_out.',@package,'.',@name)"/>
+        </xsl:apply-templates>
+        <!-- Properties -->
+        <xsl:apply-templates select="properties" mode="properties-div">          
+          <xsl:with-param name="div-id" select="concat('properties.',@package,'.',@name)"/>
+        </xsl:apply-templates>
+        &#xA0;
+      </td>
+    </tr>
+  </xsl:template>
+  
+  <!--
+    Create div with detailed system output
+  -->
+  <xsl:template match="system-out" mode="system-out-div" >
+    <xsl:param name="div-id"/>
+    <div id="{$div-id}" class="testresults-output-div" style="display: none;">
+      <span style="font-weight:bold">System out:</span><br/>
+      <xsl:apply-templates select="current()" mode="newline-to-br"/>
+    </div>  
+  </xsl:template>
+  
+  <!--
+    Create div with detailed errors output
+  -->
+  <xsl:template match="system-err" mode="system-err-div" >
+    <xsl:param name="div-id"/>
+    <div id="{$div-id}" class="testresults-output-div" style="display: none;">
+      <span style="font-weight:bold">System err:</span><br/>
+      <xsl:apply-templates select="current()" mode="newline-to-br"/>
+    </div>  
+  </xsl:template>
+  
+  <!--
+    Create div with properties
+  -->
+  <xsl:template match="properties" mode="properties-div" >
+    <xsl:param name="div-id"/>
+    <div id="{$div-id}" class="testresults-output-div" style="display: none;">
+      <span style="font-weight:bold">Properties:</span><br/>
+      <table>
+        <tr>
+          <th>Property</th>
+          <th>Value</th>
+        </tr>
+        <xsl:for-each select="property">
+          <xsl:sort select="@name"/>
+          <tr>
+            <td><xsl:value-of select="@name"/>&#xA0;</td>
+            <td><xsl:value-of select="@value"/>&#xA0;</td>
+          </tr>          
+        </xsl:for-each>
+      </table>
+    </div>  
+  </xsl:template>
+  
+  <!--
+    Convert line brakes in given text into <br/>
+  -->
+  <xsl:template match="text()" mode="newline-to-br">    
+    <xsl:value-of select="replace(current(), '(\n)|(\r)|(\r\n)', '&lt;br/&gt;')" disable-output-escaping="yes"/>          
+  </xsl:template>   
+
+</xsl:stylesheet>
diff --git a/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/unittests.xsl b/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/unittests.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..3d29a496f1689bd25ce207fd964870bf769f0588
--- /dev/null
+++ b/config/cruisecontrol/version-2.6.1/webapps/cruisecontrol/xsl/unittests.xsl
@@ -0,0 +1,283 @@
+<?xml version="1.0"?>
+<!--********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 200 E. Randolph, 25th Floor
+ * Chicago, IL 60601 USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *     + Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *
+ *     + Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *
+ *     + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
+ *       names of its contributors may be used to endorse or promote
+ *       products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ********************************************************************************-->
+<xsl:stylesheet
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+    xmlns:lxslt="http://xml.apache.org/xslt">
+
+    <xsl:output method="html"/>
+
+    <xsl:variable name="testsuite.list" select="//testsuite"/>
+    <xsl:variable name="testsuite.error.count" select="count($testsuite.list/error)"/>
+    <xsl:variable name="testcase.list" select="$testsuite.list/testcase"/>
+    <xsl:variable name="testcase.error.list" select="$testcase.list/error"/>
+    <xsl:variable name="testcase.failure.list" select="$testcase.list/failure"/>
+    <xsl:variable name="totalErrorsAndFailures" select="count($testcase.error.list) + count($testcase.failure.list) + $testsuite.error.count"/>
+
+    <xsl:template match="/" mode="unittests">
+        <table align="center" cellpadding="2" cellspacing="0" border="0" width="98%">
+
+            <!-- Unit Tests -->
+            <tr>
+                <td class="unittests-sectionheader" colspan="4">
+                   &#160;Unit Tests: (<xsl:value-of select="count($testcase.list)"/>)
+                </td>
+            </tr>
+
+            <xsl:choose>
+                <xsl:when test="count($testsuite.list) = 0">
+                    <tr>
+                        <td colspan="2" class="unittests-data">
+                            No Tests Run
+                        </td>
+                    </tr>
+                    <tr>
+                        <td colspan="2" class="unittests-error">
+                            This project doesn't have any tests
+                        </td>
+                    </tr>
+                </xsl:when>
+
+                <xsl:when test="$totalErrorsAndFailures = 0">
+                    <tr>
+                        <td colspan="2" class="unittests-data">
+                            All Tests Passed
+                        </td>
+                    </tr>
+                </xsl:when>
+            </xsl:choose>
+            <tr>
+              <td>
+                 <table align="center" cellpadding="2" cellspacing="0" border="0" width="98%">
+                    <xsl:apply-templates select="$testcase.error.list" mode="unittests"/>
+                    <xsl:apply-templates select="$testcase.failure.list" mode="unittests"/>
+                 </table>
+              </td>
+            </tr>
+            <tr/>
+            <tr><td colspan="2">&#160;</td></tr>
+
+            <xsl:if test="$totalErrorsAndFailures > 0">
+
+              <tr>
+                <td class="unittests-sectionheader" colspan="4">
+                    &#160;Unit Test Error Details:&#160;(<xsl:value-of select="$totalErrorsAndFailures"/>)
+                </td>
+              </tr>
+
+              <!-- (PENDING) Why doesn't this work if set up as variables up top? -->
+              <xsl:call-template name="testdetail">
+                <xsl:with-param name="detailnodes" select="//testsuite/testcase[.//error]"/>
+              </xsl:call-template>
+
+              <xsl:call-template name="testdetail">
+                <xsl:with-param name="detailnodes" select="//testsuite/testcase[.//failure]"/>
+              </xsl:call-template>
+            </xsl:if>
+        </table>
+    </xsl:template>
+
+    <!-- UnitTest Errors -->
+    <xsl:template match="error" mode="unittests">
+        <tr>
+            <xsl:if test="position() mod 2 = 0">
+                <xsl:attribute name="class">unittests-oddrow</xsl:attribute>
+            </xsl:if>
+
+            <td class="unittests-data" width="50">
+                error
+            </td>
+            <td class="unittests-data" width="300">
+                <xsl:value-of select="../@name"/>
+            </td>
+            <td class="unittests-data" width="400">
+                <xsl:value-of select="../@classname"/>
+            </td>
+        </tr>
+    </xsl:template>
+
+    <!-- UnitTest Failures -->
+    <xsl:template match="failure" mode="unittests">
+        <tr>
+            <xsl:if test="($testsuite.error.count + position()) mod 2 = 0">
+                <xsl:attribute name="class">unittests-oddrow</xsl:attribute>
+            </xsl:if>
+
+            <td class="unittests-data" width="50">
+                failure
+            </td>
+            <td class="unittests-data" width="300">
+                <xsl:value-of select="../@name"/>
+            </td>
+            <td class="unittests-data" width="400">
+                <xsl:value-of select="../@classname"/>
+            </td>
+        </tr>
+    </xsl:template>
+
+    <!-- UnitTest Errors And Failures Detail Template -->
+    <xsl:template name="testdetail">
+      <xsl:param name="detailnodes"/>
+
+      <xsl:for-each select="$detailnodes">
+    <tr>
+        <td colspan="2">
+        <table width="100%" border="0" cellspacing="0">
+
+        <tr class="unittests-title">
+        <td width="50">Test:&#160;</td>
+            <td>
+                <xsl:value-of select="@name"/>
+            </td>
+        </tr>
+        <tr class="unittests-data">
+        <td>Class:&#160;</td>
+            <td>
+                <xsl:value-of select="@classname"/>
+            </td>
+        </tr>
+
+        <xsl:if test="error">
+        <xsl:call-template name="test-data">
+            <xsl:with-param name="word" select="error"/>
+            <xsl:with-param name="type" select="'error'"/>
+        </xsl:call-template>
+        </xsl:if>
+
+        <xsl:if test="failure">
+        <xsl:call-template name="test-data">
+            <xsl:with-param name="word" select="failure"/>
+            <xsl:with-param name="type" select="'failure'"/>
+        </xsl:call-template>
+        </xsl:if>
+
+              </table>
+        </td>
+    </tr>
+
+      </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template name="test-data">
+        <xsl:param name="word"/>
+        <xsl:param name="type"/>
+        <tr>
+        <td/>
+            <td>
+        <xsl:call-template name="stack-trace">
+            <xsl:with-param name="word" select="$word"/>
+            <xsl:with-param name="type" select="$type"/>
+        </xsl:call-template>
+            </td>
+        </tr>
+    </xsl:template>
+
+    <xsl:template name="stack-trace">
+        <xsl:param name="word"/>
+        <xsl:param name="type"/>
+    <table width="100%" border="1" cellspacing="0" cellpadding="2">
+        <tr>
+            <td>
+                <table width="100%" border="0" cellspacing="0" cellpadding="0">
+                    <xsl:call-template name="br-replace">
+                    <xsl:with-param name="word" select="$word"/>
+                    <xsl:with-param name="type" select="$type"/>
+                    <xsl:with-param name="count" select="0"/>
+                    </xsl:call-template>
+                </table>
+            </td>
+        </tr>
+        </table>
+    </xsl:template>
+
+    <xsl:template name="br-replace">
+        <xsl:param name="word"/>
+        <xsl:param name="type"/>
+        <xsl:param name="count"/>
+<!-- </xsl:text> on next line on purpose to get newline -->
+<xsl:variable name="stackstart"><xsl:text>	at</xsl:text></xsl:variable>
+<xsl:variable name="cr"><xsl:text>
+</xsl:text></xsl:variable>
+        <xsl:choose>
+            <xsl:when test="contains($word,$cr)">
+        <tr>
+        <xsl:attribute name="class">unittests-<xsl:value-of select="$type"/></xsl:attribute>
+        <xsl:if test="$count mod 2 != 0">
+            <xsl:attribute name="bgcolor">#EEEEEE</xsl:attribute>
+        </xsl:if>
+        <xsl:if test="$count != 0 and starts-with($word,$stackstart)">
+            <td width="30"/>
+            <td>
+                <xsl:value-of select="substring-before($word,$cr)"/>&#160;
+            </td>
+        </xsl:if>
+        <xsl:if test="$count != 0 and not(starts-with($word,$stackstart))">
+            <td colspan="2">
+                <xsl:value-of select="substring-before($word,$cr)"/>&#160;
+            </td>
+        </xsl:if>
+        <xsl:if test="$count = 0">
+            <td colspan="2">
+                <xsl:value-of select="substring-before($word,$cr)"/>&#160;
+            </td>
+        </xsl:if>
+        </tr>
+                <xsl:call-template name="br-replace">
+                    <xsl:with-param name="word" select="substring-after($word,$cr)"/>
+            <xsl:with-param name="type" select="$type"/>
+                    <xsl:with-param name="count" select="$count + 1"/>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+        <tr>
+        <xsl:attribute name="class">unittests-<xsl:value-of select="$type"/></xsl:attribute>
+        <xsl:if test="$count mod 2 != 0">
+            <xsl:attribute name="bgcolor">#EEEEEE</xsl:attribute>
+        </xsl:if>
+        <td width="30"/>
+        <td>
+                <xsl:value-of select="$word"/>
+        </td>
+        </tr>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template match="/">
+        <xsl:apply-templates select="." mode="unittests"/>
+    </xsl:template>
+</xsl:stylesheet>