diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bfe27afdf030c54f86e26e86250b6911499fb844..46472df6aacd0850d4b467be8f0ea5c3ae729553 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,6 +17,7 @@ pages:
   stage: deploy
   script:
   - mkdocs build --strict --verbose
+  - cp -r org.framed.updatesite/* public/site
   artifacts:
     paths:
     - public
diff --git a/mkdocs.yml b/mkdocs.yml
index 588b328ffddbacef068e537e93a1433a045f0966..d03991fa9f61fede8767c59a08c06110fd19e2a7 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,4 +1,2 @@
 site_name: FRAmED
-site_url: https://pages.gitlab.io/mkdocs
-site_dir: public
 theme: readthedocs
diff --git a/org.framed.feature/.project b/org.framed.feature/.project
new file mode 100644
index 0000000000000000000000000000000000000000..e68283e8c8be6abc7276e29237878f835156608d
--- /dev/null
+++ b/org.framed.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.framed.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.framed.feature/build.properties b/org.framed.feature/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..64f93a9f0b7328eb563aa5ad6cec7f828020e124
--- /dev/null
+++ b/org.framed.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/org.framed.feature/feature.xml b/org.framed.feature/feature.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d2a0a59073edfb0ea1ab220b63569f65ea8ccb2
--- /dev/null
+++ b/org.framed.feature/feature.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.framed.feature"
+      label="Feature"
+      version="1.0.0">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="org.framed.iorm.model"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.featuremodel"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.metamodel.editor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.transformation.test"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.editpolicymodel"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.toformal.cli"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.model.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.editpolicymodel.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.toformal"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.metamodel.tests"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.metamodel"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.rosi.crom.metamodel.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.framed.iorm.transformation"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.framed.iorm.ui/framed.product b/org.framed.iorm.ui/framed.product
index 59a0aa0f2b48892065ed69b1cc2bc89ad93c03a9..055cef782b4d786d6be585d4075adfda4b646485 100644
--- a/org.framed.iorm.ui/framed.product
+++ b/org.framed.iorm.ui/framed.product
@@ -505,6 +505,10 @@ version(s), and exceptions or additional permissions here}.&quot;
       <plugin id="org.framed.iorm.ui" autoStart="true" startLevel="3" />
    </configurations>
 
+   <repositories>
+      <repository location="http://https://rosi.pages.st.inf.tu-dresden.de/framed/site" enabled="true" />
+   </repositories>
+
    <preferencesInfo>
       <targetfile overwrite="false"/>
    </preferencesInfo>
diff --git a/org.framed.updatesite/.project b/org.framed.updatesite/.project
new file mode 100644
index 0000000000000000000000000000000000000000..f2631ef24a250e1f6c2419eccc226bfc46c588df
--- /dev/null
+++ b/org.framed.updatesite/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.framed.updatesite</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.framed.updatesite/artifacts.jar b/org.framed.updatesite/artifacts.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0dba0c2d8b32fafaa6aa1c047088f61b1508b993
Binary files /dev/null and b/org.framed.updatesite/artifacts.jar differ
diff --git a/org.framed.updatesite/content.jar b/org.framed.updatesite/content.jar
new file mode 100644
index 0000000000000000000000000000000000000000..5d3c53d84ff83658098b73c2e60144b91e3fba89
Binary files /dev/null and b/org.framed.updatesite/content.jar differ
diff --git a/org.framed.updatesite/features/org.framed.feature_1.0.0.jar b/org.framed.updatesite/features/org.framed.feature_1.0.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f1387d94bc8db2b659fff36d623d4bb89f5ba287
Binary files /dev/null and b/org.framed.updatesite/features/org.framed.feature_1.0.0.jar differ
diff --git a/org.framed.updatesite/index.html b/org.framed.updatesite/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..f21f914cd00ace3c312c758f5f5b01ccefa5703a
--- /dev/null
+++ b/org.framed.updatesite/index.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+<title>org.framed.updatesite</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>@import url("web/site.css");</style>
+<script type="text/javascript">
+	var returnval = 0;
+	var stylesheet, xmlFile, cache, doc;
+	function init(){
+		// NSCP 7.1+ / Mozilla 1.4.1+ / Safari
+		// Use the standard DOM Level 2 technique, if it is supported
+		if (document.implementation && document.implementation.createDocument) {
+			xmlFile = document.implementation.createDocument("", "", null);
+			stylesheet = document.implementation.createDocument("", "", null);
+			if (xmlFile.load){
+				xmlFile.load("site.xml");
+				stylesheet.load("web/site.xsl");
+			} else {
+				alert("Document could not be loaded by browser.");
+			}
+			xmlFile.addEventListener("load", transform, false);
+			stylesheet.addEventListener("load", transform, false);
+		}
+		//IE 6.0+ solution
+		else if (window.ActiveXObject) {
+			xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
+			xmlFile.async = false;
+			xmlFile.load("site.xml");
+			stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
+			stylesheet.async = false;
+			stylesheet.load("web/site.xsl");
+			cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
+			cache.stylesheet = stylesheet;
+			transformData();
+		}
+	}
+	// separate transformation function for IE 6.0+
+	function transformData(){
+		var processor = cache.createProcessor();
+		processor.input = xmlFile;
+		processor.transform();
+		data.innerHTML = processor.output;
+	}
+	// separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+ 
+	function transform(){
+		returnval+=1;
+		if (returnval==2){
+			var processor = new XSLTProcessor();
+			processor.importStylesheet(stylesheet); 
+			doc = processor.transformToDocument(xmlFile);
+			document.getElementById("data").innerHTML = doc.documentElement.innerHTML;
+		}
+	}
+</script>
+</head>
+<body onload="init();">
+<!--[insert static HTML here]-->
+<div id="data"><!-- this is where the transformed data goes --></div>
+</body>
+</html>
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f4ab20465546aca3a5ecda5cc2882f7c29b42b59
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..912a4b1c9661a5059e417c89f660ebd6c87336c3
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..bb1e65465a96d17e5bd05fcfe1dd8d2c5d9ca453
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..9e5c789132da0961ae6e2a77d12a7d86ff13b4af
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..c6927d52aeaa8e4b82552192d2bd6c852bf9d3b2
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar b/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar
new file mode 100644
index 0000000000000000000000000000000000000000..09b3ebc4b0a7f998d8f2c30e27d0fa354e553665
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar b/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..9dd8049b75b85e0ee56803ba72f3a78bf619caeb
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar differ
diff --git a/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..3dfb915db413d7d6aefda1c9129eaaa343e00cb0
Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..c4e4766f2120579ffedaac43c193cd79b5b277db
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..94f26688ad3f17816bc1b594641aa8efc820eb14
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b91aee897e7cff80bac373c677bae394d5906604
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..0c842057c931f7d62176b44fcf9ab5693ee3f2d6
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar b/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..c85348abd60473b191104fbf08752a61e50b9ecf
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar differ
diff --git a/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar b/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..9c2f5114def2d6eb53ec0f595850f11e88aeb02c
Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar differ
diff --git a/org.framed.updatesite/site.xml b/org.framed.updatesite/site.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b0c26de17618eec8410cbf5ae98c776e5c0f5385
--- /dev/null
+++ b/org.framed.updatesite/site.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <feature url="features/org.framed.feature_1.0.0.jar" id="org.framed.feature" version="1.0.0"/>
+</site>
diff --git a/org.framed.updatesite/web/site.css b/org.framed.updatesite/web/site.css
new file mode 100644
index 0000000000000000000000000000000000000000..62c6f9ffa4472e7893b59ccfdb9665254a6a07b2
--- /dev/null
+++ b/org.framed.updatesite/web/site.css
@@ -0,0 +1,12 @@
+<STYLE type="text/css">
+td.spacer {padding-bottom: 10px; padding-top: 10px;}
+.title { font-family: sans-serif; color: #99AACC;}
+.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000;  }
+.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
+.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
+.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
+.light-row {background:#FFFFFF}
+.dark-row {background:#EEEEFF}
+.header {background:#99AADD}
+#indent {word-wrap : break-word;width :300px;text-indent:10px;}
+</STYLE>
diff --git a/org.framed.updatesite/web/site.xsl b/org.framed.updatesite/web/site.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..f22ab309a030b221e21cc7cf5bb351eb2bb3238e
--- /dev/null
+++ b/org.framed.updatesite/web/site.xsl
@@ -0,0 +1,214 @@
+<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
+<xsl:output method="html" encoding="UTF-8"/>
+<xsl:key name="cat" match="category" use="@name"/>
+<xsl:template match="/">
+<xsl:for-each select="site">
+	<html>
+	<head>
+	<title>org.framed.updatesite</title>
+	<style>@import url("web/site.css");</style>
+	</head>
+	<body>
+	<h1 class="title">org.framed.updatesite</h1>
+	<p class="bodyText"><xsl:value-of select="description"/></p>
+	<table width="100%" border="0" cellspacing="1" cellpadding="2">
+	<xsl:for-each select="category-def">
+		<xsl:sort select="@label" order="ascending" case-order="upper-first"/>
+		<xsl:sort select="@name" order="ascending" case-order="upper-first"/>
+	<xsl:if test="count(key('cat',@name)) != 0">
+			<tr class="header">
+				<td class="sub-header" width="30%">
+					<xsl:value-of select="@name"/>
+				</td>
+				<td class="sub-header" width="70%">
+					<xsl:value-of select="@label"/>
+				</td>
+			</tr>
+			<xsl:for-each select="key('cat',@name)">
+			<xsl:sort select="ancestor::feature//@version" order="ascending"/>
+			<xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
+			<tr>
+				<xsl:choose>
+				<xsl:when test="(position() mod 2 = 1)">
+					<xsl:attribute name="class">dark-row</xsl:attribute>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:attribute name="class">light-row</xsl:attribute>
+				</xsl:otherwise>
+				</xsl:choose>
+				<td class="log-text" id="indent">
+						<xsl:choose>
+						<xsl:when test="ancestor::feature//@label">
+							<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
+							<br/>
+							<div id="indent">
+							(<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
+							</div>
+						</xsl:when>
+						<xsl:otherwise>
+						<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
+						</xsl:otherwise>
+						</xsl:choose>
+						<br />
+				</td>
+				<td>
+					<table>
+						<xsl:if test="ancestor::feature//@os">
+							<tr><td class="log-text" id="indent">Operating Systems:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@ws">
+							<tr><td class="log-text" id="indent">Windows Systems:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@nl">
+							<tr><td class="log-text" id="indent">Languages:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@arch">
+							<tr><td class="log-text" id="indent">Architecture:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
+							</tr>
+						</xsl:if>
+					</table>
+				</td>
+			</tr>
+			</xsl:for-each>
+			<tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
+		</xsl:if>
+	</xsl:for-each>
+	<xsl:if test="count(feature)  &gt; count(feature/category)">
+	<tr class="header">
+		<td class="sub-header" colspan="2">
+		Uncategorized
+		</td>
+	</tr>
+	</xsl:if>
+	<xsl:choose>
+	<xsl:when test="function-available('msxsl:node-set')">
+	   <xsl:variable name="rtf-nodes">
+		<xsl:for-each select="feature[not(category)]">
+			<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+			<xsl:sort select="@version" order="ascending" />
+			<xsl:value-of select="."/>
+			<xsl:copy-of select="." />
+		</xsl:for-each>
+	   </xsl:variable>
+	   <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
+	<xsl:for-each select="$myNodeSet">
+	<tr>
+		<xsl:choose>
+		<xsl:when test="position() mod 2 = 1">
+		<xsl:attribute name="class">dark-row</xsl:attribute>
+		</xsl:when>
+		<xsl:otherwise>
+		<xsl:attribute name="class">light-row</xsl:attribute>
+		</xsl:otherwise>
+		</xsl:choose>
+		<td class="log-text" id="indent">
+			<xsl:choose>
+			<xsl:when test="@label">
+				<a href="{@url}"><xsl:value-of select="@label"/></a>
+				<br />
+				<div id="indent">
+				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+				</div>
+			</xsl:when>
+			<xsl:otherwise>
+				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+			</xsl:otherwise>
+			</xsl:choose>
+			<br /><br />
+		</td>
+		<td>
+			<table>
+				<xsl:if test="@os">
+					<tr><td class="log-text" id="indent">Operating Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@ws">
+					<tr><td class="log-text" id="indent">Windows Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@nl">
+					<tr><td class="log-text" id="indent">Languages:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@arch">
+					<tr><td class="log-text" id="indent">Architecture:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+					</tr>
+				</xsl:if>
+			</table>
+		</td>
+	</tr>
+	</xsl:for-each>
+	</xsl:when>
+	<xsl:otherwise>
+	<xsl:for-each select="feature[not(category)]">
+	<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+	<xsl:sort select="@version" order="ascending" />
+	<tr>
+		<xsl:choose>
+		<xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
+		<xsl:attribute name="class">dark-row</xsl:attribute>
+		</xsl:when>
+		<xsl:otherwise>
+		<xsl:attribute name="class">light-row</xsl:attribute>
+		</xsl:otherwise>
+		</xsl:choose>
+		<td class="log-text" id="indent">
+			<xsl:choose>
+			<xsl:when test="@label">
+				<a href="{@url}"><xsl:value-of select="@label"/></a>
+				<br />
+				<div id="indent">
+				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+				</div>
+			</xsl:when>
+			<xsl:otherwise>
+				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+			</xsl:otherwise>
+			</xsl:choose>
+			<br /><br />
+		</td>
+		<td>
+			<table>
+				<xsl:if test="@os">
+					<tr><td class="log-text" id="indent">Operating Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@ws">
+					<tr><td class="log-text" id="indent">Windows Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@nl">
+					<tr><td class="log-text" id="indent">Languages:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@arch">
+					<tr><td class="log-text" id="indent">Architecture:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+					</tr>
+				</xsl:if>
+			</table>
+		</td>
+	</tr>
+	</xsl:for-each>
+	</xsl:otherwise>
+	</xsl:choose>
+	</table>
+	</body>
+	</html>
+</xsl:for-each>
+</xsl:template>
+</xsl:stylesheet>