diff --git a/app.py b/app.py
index 1f12af34b1ad35de36cf72c147e2d0954e47c548..d6dcfea6efef4c1d3b691f7a69d9eda6fdcf4867 100644
--- a/app.py
+++ b/app.py
@@ -163,7 +163,13 @@ class Software(db.Model):
 
     programminglanguages = db.relationship('Programminglanguage', secondary=software_programminglanguages_table)
 
-    architecture = db.Column(db.Enum('standalone', 'package', 'framework', 'app', 'SaaS', 'plugin', 'other', name='software_types'))
+    architecture = db.Column(db.Enum('stand-alone application',
+                                     'server application',
+                                     'framework',
+                                     'library',
+                                     'app',
+                                     'plugin',
+                                     'other', name='software_types'))
 
     operatingsystems = db.relationship('Operatingsystem', secondary=software_operatingsystems_table)
 
@@ -213,16 +219,31 @@ def index():
         template.stream(software=software_tool).dump(
             '../digitale_Methoden.wiki/Tool_' + software_tool.name.replace(' ', '').replace('/', '') + '.asciidoc', encoding='utf-8')
 
-    softwareincategory = []
+    # select software tools for overview page
+    standalonesoftwareincategory = []
+    serversoftwareincategory = []
+    libsoftwareincategory = []
     software_categorys = SoftwareCategory.query.all()
+
+    # standalone software
+    for software_category in software_categorys:
+        softwares = Software.query.filter((Software.softwarecategory_id == software_category.id) & (Software.architecture == "stand-alone application"))
+        standalonesoftwareincategory.append((software_category, softwares))
+    # server software
     for software_category in software_categorys:
-        softwares = Software.query.filter(Software.softwarecategory_id == software_category.id)
-        softwareincategory.append((software_category, softwares))
+        softwares = Software.query.filter((Software.softwarecategory_id == software_category.id) & (Software.architecture == "server application"))
+        serversoftwareincategory.append((software_category, softwares))
+    # other software
+    for software_category in software_categorys:
+        softwares_r = Software.query.filter((Software.softwarecategory_id == software_category.id) & ((Software.architecture != "stand-alone application") & (Software.architecture != "server application")) & Software.programminglanguages.any(Programminglanguage.name=="R"))
+        softwares_py = Software.query.filter((Software.softwarecategory_id == software_category.id) & ((Software.architecture != "stand-alone application") & (Software.architecture != "server application")) & Software.programminglanguages.any(name="Python"))
+        softwares_misc = Software.query.filter((Software.softwarecategory_id == software_category.id) & ((Software.architecture != "stand-alone application") & (Software.architecture != "server application")) & (~ (Software.programminglanguages.any(name="Python") | Software.programminglanguages.any(name="R"))))
+        libsoftwareincategory.append((software_category, softwares_r, softwares_py,softwares_misc))
 
     # Generate tools overview page
     with open('templates/export/softwares.jinja2', "r", encoding="utf-8") as file_:
         template = Template(file_.read())
-    template.stream(softwareincategory=softwareincategory).dump('../digitale_Methoden.wiki/SoftwareToolsList.asciidoc', encoding='utf-8')
+    template.stream(standalonesoftwareincategory=standalonesoftwareincategory,serversoftwareincategory=serversoftwareincategory,libsoftwareincategory=libsoftwareincategory).dump('../digitale_Methoden.wiki/SoftwareToolsList.asciidoc', encoding='utf-8')
 
     # Generate methods overview page
     hierarchy = db.session.query(Method, literal(0).label('level')).filter(Method.parent_id == null()) \
@@ -266,7 +287,7 @@ def index():
 
 
 class AdvancedSoftwareView(sqla.ModelView):
-    column_sortable_list = ('name', ('license', ("license.name", "license.version")) , ('softwarecategory', 'softwarecategory.name'), 'lastchanged', )
+    column_sortable_list = ('name', ('license', ("license.name", "license.version")) , ('softwarecategory', 'softwarecategory.name'), 'lastchanged', 'architecture', )
     column_list = ('name', 'license', 'softwarecategory', 'links', 'architecture','programminglanguages','price', )
     inline_models = (Link,)
     column_hide_backrefs = False
@@ -605,18 +626,18 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                      description="",
                      parent=m_statistical_modeling)
     db.session.add(m_time_series_analysis)
-    m_agent_based_modeling = Method(id=65,name="agent-based modeling",
-                     description="",
-                     parent=m_statistical_modeling)
-    db.session.add(m_agent_based_modeling)
+    m_nowcasting = Method(id=65,name="forecasting/nowcasting",
+                     description="Using methods to predict the future for estimation of current values. (Example: predict influenza epidemiology combining CDC Data and Google Trends(<<Salganik2018>>,46–50)).",
+                     parent=m_time_series_analysis)
+    db.session.add(m_nowcasting)
     m_social_complexity = Method(id=66,name="social complexity modeling/ social simulation",
                      description="",
                      parent=method1)
     db.session.add(m_social_complexity)
-    m_nowcasting = Method(id=67,name="nowcasting",
-                     description="Using methods to predict the future for estimation of current values. (Example: predict influenza epidemiology combining CDC Data and Google Trends(<<Salganik2018>>,46–50)).",
+    m_agent_based_modeling = Method(id=67,name="agent-based modeling",
+                     description="",
                      parent=m_social_complexity)
-    db.session.add(m_nowcasting)
+    db.session.add(m_agent_based_modeling)
 
     reference = Reference(name="Rogers2013",
                           cited="Rogers, R. (2013). Digital methods. Cambridge, Massachusetts, London, England: The MIT Press.")
@@ -693,6 +714,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
     prol_jupyternb = Programminglanguage(name="Jupyter Notebook")
     prol_js = Programminglanguage(name="Javascript")
     prol_c = Programminglanguage(name="C")
+    prol_csharp = Programminglanguage(name="C#")
     prol_ruby = Programminglanguage(name="Ruby")
     prol_perl = Programminglanguage(name="Perl")
 
@@ -796,7 +818,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Cody Zacharias",
                     maintainer="Cody Zacharias",
                     softwarecategory=cat_scraping,
-                    architecture="package",
+                    architecture="library",
                     license=lic_mit,
                     programminglanguages=[prol_py],
                     price="0")
@@ -809,7 +831,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Kohne, J., Breuer, J., & Mohseni, M. R.",
                     maintainer="Kohne, J., Breuer, J., & Mohseni, M. R.",
                     softwarecategory=cat_scraping,
-                    architecture="package",
+                    architecture="library",
                     license=lic_unknown,
                     programminglanguages=[prol_r],
                     price="0",
@@ -823,7 +845,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Jakob Jünger and Till Keyling",
                     maintainer="Jakob Jünger",
                     softwarecategory=cat_scraping,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_mit,
                     programminglanguages=[prol_py],
                     price="0")
@@ -836,7 +858,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_scraping,
-                    architecture="package",
+                    architecture="framework",
                     license=lic_bsd,
                     programminglanguages=[prol_py],
                     price="0")
@@ -844,24 +866,63 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
     db.session.add(Link(software=tool, type="website", url="https://scrapy.org/", comment=""))
     db.session.add(Link(software=tool, type="repository", url="https://github.com/scrapy/scrapy", comment=""))
 
+    tool = Software(name="Beautiful Soup",
+                    short_description="'Beautiful Soup is a Python library designed for quick turnaround projects like screen-scraping. Three features make it powerful: Beautiful Soup provides a few simple methods and Pythonic idioms for navigating, searching, and modifying a parse tree: a toolkit for dissecting a document and extracting what you need. It doesn't take much code to write an application;Beautiful Soup automatically converts incoming documents to Unicode and outgoing documents to UTF-8. You don't have to think about encodings, unless the document doesn't specify an encoding and Beautiful Soup can't detect one. Then you just have to specify the original encoding.;Beautiful Soup sits on top of popular Python parsers like lxml and html5lib, allowing you to try out different parsing strategies or trade speed for flexibility.'link:https://www.crummy.com/software/BeautifulSoup/[Retrieved 22.03.2019]",
+                    developer="Leonard Richardson",
+                    maintainer="Leonard Richardson",
+                    softwarecategory=cat_scraping,
+                    architecture="library",
+                    license=lic_mit,
+                    programminglanguages=[prol_py],
+                    price="0")
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://www.crummy.com/software/BeautifulSoup/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/scrapy/scrapy", comment=""))
+
+    tool = Software(name="Robobrowser",
+                    short_description="",
+                    developer="Joshua Carp",
+                    maintainer="Joshua Carp",
+                    softwarecategory=cat_scraping,
+                    architecture="library",
+                    license=lic_mit,
+                    programminglanguages=[prol_py],
+                    price="0")
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://robobrowser.readthedocs.io/en/latest/readme.html", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/jmcarp/robobrowser", comment=""))
+
     tool = Software(name="RSelenium",
                     short_description="",
                     developer="John Harrison",
                     maintainer="Ju Yeong Kim",
                     softwarecategory=cat_scraping,
-                    architecture="package",
+                    architecture="library",
                     license=lic_agpl3,
                     programminglanguages=[prol_r],
                     price="0")
     db.session.add(tool)
     db.session.add(Link(software=tool, type="repository", url="https://github.com/ropensci/RSelenium", comment=""))
 
+    tool = Software(name="rvest",
+                    short_description="",
+                    developer="Hadley Wickham",
+                    maintainer="Hadley Wickham",
+                    softwarecategory=cat_scraping,
+                    architecture="library",
+                    license=lic_gpl3,
+                    programminglanguages=[prol_r],
+                    price="0")
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://cran.r-project.org/web/packages/rvest/index.html", comment="cran"))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/tidyverse/rvest", comment=""))
+
     tool = Software(name="AmCAT",
                     short_description="'The Amsterdam Content Analysis Toolkit (AmCAT) is an open source infrastructure that makes it easy to do large-scale automatic and manual content analysis (text analysis) for the social sciences and humanities.'",
                     developer="Chris Karr",
                     maintainer="Ju Yeong Kim",
                     softwarecategory=cat_int,
-                    architecture="SaaS",
+                    architecture="server application",
                     license=lic_agpl3,
                     programminglanguages=[prol_py],
                     price="0")
@@ -870,12 +931,31 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
     db.session.add(Link(software=tool, type="repository", url="https://github.com/amcat/amcat", comment=""))
     db.session.add(Link(software=tool, type="wiki", url="http://wiki.amcat.nl/3.4:AmCAT_Navigator_3", comment=""))
 
+    tool = Software(name="CorpusExplorer",
+                    short_description="'OpenSource Software für Korpuslinguist*innen und Text-/Data-Mining Interessierte. Der CorpusExplorer vereint über 50 interaktiven Auswertungsmöglichkeiten mit einer einfachen Bedienung. Routineaufgaben wie z. B. Textakquise, Taggen oder die grafische Aufbereitung von Ergebnissen werden vollständig automatisiert. Die einfache Handhabung erleichtert den Einsatz in der universitären Lehre und führt zu schnellen sowie gehaltvollen Ergebnissen. Dabei ist der CorpusExplorer offen für viele Standards (XML, CSV, JSON, R, uvm.) und bietet darüber hinaus ein eigenes Software Development Kit (SDK) an, mit dem es möglich ist, alle Funktionen in eigene Programme zu integrieren.' link:https://notes.jan-oliver-ruediger.de/software/corpusexplorer-overview/[source, retrieved 22.03.2019]",
+                    developer="Jan Oliver Rüdiger",
+                    maintainer="Jan Oliver Rüdiger",
+                    architecture="stand-alone application",
+                    softwarecategory=cat_int,
+                    license=lic_agpl3,
+                    programminglanguages=[prol_csharp],
+                    languages=[lang_de],
+                    operatingsystems=[os_win],
+                    currentversion="Q12019",
+                    lastchanged=datetime.datetime.strptime('04032019', '%d%m%Y').date(),
+                    methods=[m_w_dict_frequencies],
+                    price="0",
+                    recommandedcitation="Rüdiger, Jan Oliver (2018): CorpusExplorer. Version 2.0. Universität Kassel - Universität Siegen. Online verfügbar unter http://corpusexplorer.de")
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://notes.jan-oliver-ruediger.de/software/corpusexplorer-overview/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/notesjor/corpusexplorer2.0", comment=""))
+
     tool = Software(name="COSMOS",
                     short_description="COSMOS Open Data Analytics software",
                     developer="",
                     maintainer="",
                     softwarecategory=cat_int,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[],
                     price="0")
@@ -887,7 +967,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Stefan Evert et al.",
                     maintainer="Stefan Evert et al.",
                     softwarecategory=cat_int,
-                    architecture="framework",
+                    architecture="server application",
                     license=lic_gpl3,
                     programminglanguages=[prol_c,prol_perl],
                     languages=[lang_en],
@@ -910,16 +990,14 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     license=lic_lgpl,
                     programminglanguages=[prol_java,prol_r],
                     price="0")
-
-
     db.session.add(tool)
     db.session.add(Link(software=tool, type="website", url="http://lcm.informatik.uni-leipzig.de/generic.html", comment=""))
 
     tool = Software(name="iLCM",
                     short_description="'The iLCM[LCM=Leipzig Corpus Miner] project pursues the development of an integrated research environment for the analysis of structured and unstructured data in a ‘Software as a Service’ architecture (SaaS). The research environment addresses requirements for the quantitative evaluation of large amounts of qualitative data using text mining methods and requirements for the reproducibility of data-driven research designs in the social sciences.' link:http://ilcm.informatik.uni-leipzig.de/ilcm/ilcm/[source, retrieved 08.03.2019]",
-                    developer=" Andreas Niekler, Arnim Bleier, Christian Kahmann, Lisa Posch, Gregor Wiedemann, Kenan Erdogan, Gerhard Heyer and Markus Strohmaier",
+                    developer="Andreas Niekler, Arnim Bleier, Christian Kahmann, Lisa Posch, Gregor Wiedemann, Kenan Erdogan, Gerhard Heyer and Markus Strohmaier",
                     maintainer="Andreas Niekler, Arnim Bleier, Christian Kahmann, Lisa Posch, Gregor Wiedemann, Kenan Erdogan, Gerhard Heyer and Markus Strohmaier",
-                    architecture="SaaS",
+                    architecture="server application",
                     softwarecategory=cat_int,
                     license=lic_lgpl,
                     programminglanguages=[prol_java,prol_py,prol_r],
@@ -939,7 +1017,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[],
                     price="600€/1 User/Perpetual")
@@ -951,7 +1029,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[],
                     price="1500 AUD/? User/Perpetual")
@@ -963,7 +1041,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[],
                     price="Unilizenz")
@@ -975,7 +1053,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[],
                     price="")
@@ -987,7 +1065,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -998,7 +1076,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1009,7 +1087,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1021,7 +1099,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Ronggui Huang",
                     maintainer="Ronggui Huang",
                     softwarecategory=cat_qda,
-                    architecture="package",
+                    architecture="library",
                     license=lic_bsd,
                     programminglanguages=[prol_r],
                     price="")
@@ -1034,7 +1112,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_qda,
-                    architecture="standalone",
+                    architecture="stand-alone application",
                     license=lic_gpl2,
                     programminglanguages=[],
                     price="")
@@ -1047,7 +1125,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     maintainer="",
                     softwarecategory=cat_tm,
                     license=lic_apache2,
-                    architecture="package",
+                    architecture="library",
                     programminglanguages=[prol_java],
                     price="0")
     db.session.add(tool)
@@ -1059,7 +1137,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="framework",
                     license=lic_lgpl,
                     programminglanguages=[prol_java],
                     price="0")
@@ -1072,7 +1150,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_lgpl,
                     programminglanguages=[prol_py],
                     price="0")
@@ -1085,7 +1163,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="framework",
                     license=lic_apache2,
                     programminglanguages=[prol_py],
                     price="0")
@@ -1098,7 +1176,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_bsd,
                     programminglanguages=[prol_py],
                     price="0")
@@ -1111,7 +1189,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Andreas Blätte",
                     maintainer="Andreas Blätte",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_r],
                     price="0")
@@ -1124,7 +1202,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Kenneth Benoit",
                     maintainer="Kenneth Benoit",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_r],
                     price="0")
@@ -1137,7 +1215,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="framework",
+                    architecture="stand-alone application",
                     license=lic_agpl3,
                     programminglanguages=[prol_java],
                     price="")
@@ -1150,7 +1228,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_mit,
                     programminglanguages=[prol_cy],
                     price="0")
@@ -1163,7 +1241,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_tm,
-                    architecture="framework",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_java],
                     price="0")
@@ -1176,7 +1254,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Ingo Feinerer, Kurt Hornik",
                     maintainer="Ingo Feinerer, Kurt Hornik",
                     softwarecategory=cat_tm,
-                    architecture="package",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_r],
                     price="0")
@@ -1203,7 +1281,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_topic,
-                    architecture="package",
+                    architecture="library",
                     license=lic_apache2,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1215,7 +1293,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_topic,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_unknown,
                     programminglanguages=[prol_py, prol_jupyternb])
     db.session.add(tool)
@@ -1227,7 +1305,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_topic,
-                    architecture="package",
+                    architecture="library",
                     license=lic_mit,
                     programminglanguages=[prol_r],
                     price="0")
@@ -1240,7 +1318,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_senti,
-                    architecture="package",
+                    architecture="library",
                     license=lic_prop,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1251,7 +1329,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_senti,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_unknown,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1263,7 +1341,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_senti,
-                    architecture="package",
+                    architecture="library",
                     license=lic_byncnd3,
                     programminglanguages=[prol_r])
     db.session.add(tool)
@@ -1274,7 +1352,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_visu,
-                    architecture="package",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1286,7 +1364,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Alexis Jacomy",
                     maintainer="Alexis Jacomy",
                     softwarecategory=cat_visu,
-                    architecture="package",
+                    architecture="library",
                     license=lic_mit,
                     programminglanguages=[prol_js])
     db.session.add(tool)
@@ -1298,7 +1376,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Stéfan van der Walt, Johannes L. Schönberger, Juan Nunez-Iglesias, François Boulogne, Joshua D. Warner, Neil Yager, Emmanuelle Gouillart, Tony Yu, and the scikit-image contributors",
                     maintainer="Stéfan van der Walt, Johannes L. Schönberger, Juan Nunez-Iglesias, François Boulogne, Joshua D. Warner, Neil Yager, Emmanuelle Gouillart, Tony Yu, and the scikit-image contributors",
                     softwarecategory=cat_visu,
-                    architecture="package",
+                    architecture="library",
                     license=lic_bsd,
                     programminglanguages=[prol_py])
     db.session.add(tool)
@@ -1310,7 +1388,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_kollab_anno,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_apache2,
                     programminglanguages=[prol_py])
     db.session.add(tool)
@@ -1323,7 +1401,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_kollab_anno,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_apache2,
                     programminglanguages=[prol_py])
     db.session.add(tool)
@@ -1335,7 +1413,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_kollab_write,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_agpl3,
                     programminglanguages=[prol_py,prol_js])
     db.session.add(tool)
@@ -1347,7 +1425,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_repo,
-                    architecture="framework",
+                    architecture="server application",
                     license=lic_apache2,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1359,7 +1437,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_stat,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_gpl3,
                     programminglanguages=[prol_c])
     db.session.add(tool)
@@ -1371,7 +1449,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_stat,
-                    architecture="package",
+                    architecture="library",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1383,7 +1461,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_stat,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1395,7 +1473,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_stat,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1406,7 +1484,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_now,
-                    architecture="package",
+                    architecture="library",
                     license=lic_gpl3,
                     programminglanguages=[prol_r])
     db.session.add(tool)
@@ -1418,7 +1496,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1429,7 +1507,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1440,7 +1518,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1452,7 +1530,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1463,7 +1541,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_bsd,
                     programminglanguages=[prol_py])
     db.session.add(tool)
@@ -1475,7 +1553,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_net,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_prop,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1486,7 +1564,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_search,
-                    architecture="package",
+                    architecture="library",
                     license=lic_apache2,
                     programminglanguages=[])
     db.session.add(tool)
@@ -1510,7 +1588,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                      developer="",
                      maintainer="",
                      softwarecategory=cat_transkript,
-                     architecture="standalone",
+                     architecture="stand-alone application",
                      license=lic_prop)
     db.session.add(f4analyse)
     db.session.add(Link(software=f4analyse, type="website", url="https://www.audiotranskription.de/f4-analyse", comment=""))
@@ -1520,7 +1598,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_transkript,
-                    architecture="framework",
+                    architecture="stand-alone application",
                     license=lic_unknown,
                     programminglanguages=[prol_java])
     db.session.add(tool)
@@ -1532,7 +1610,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Google, HP Inc.",
                     maintainer="Ray Smith u. a. ",
                     softwarecategory=cat_ocr,
-                    architecture="package",
+                    architecture="library",
                     license=lic_apache2,
                     programminglanguages=[prol_py])
     db.session.add(tool)
@@ -1543,7 +1621,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_oe,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_prop,
                     programminglanguages=[prol_js],
                     price="0")
@@ -1555,7 +1633,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Stefan Balietti",
                     maintainer="Stefan Balietti",
                     softwarecategory=cat_oe,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_mit,
                     programminglanguages=[prol_js],
                     languages=[lang_en],
@@ -1574,7 +1652,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="McKnight, Mark E., and Nicholas A. Christakis",
                     maintainer="McKnight, Mark E., and Nicholas A. Christakis",
                     softwarecategory=cat_oe,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_unknown,
                     programminglanguages=[prol_js],
                     price="0",
@@ -1588,7 +1666,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Nicolas Paton, & Abdullah Almaatouq",
                     maintainer="Nicolas Paton, & Abdullah Almaatouq",
                     softwarecategory=cat_oe,
-                    architecture="package",
+                    architecture="server application",
                     license=lic_mit,
                     programminglanguages=[prol_js],
                     price="0",
@@ -1602,7 +1680,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Alexandra Papoutsaki and James Laskey and Jeff Huang",
                     maintainer="Alexandra Papoutsaki and James Laskey and Jeff Huang",
                     softwarecategory=cat_eye,
-                    architecture="package",
+                    architecture="framework",
                     license=lic_mit,
                     programminglanguages=[prol_js],
                     price="0",
@@ -1616,7 +1694,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Uri Wilensky",
                     maintainer="Uri Wilensky",
                     softwarecategory=cat_agent,
-                    architecture="package",
+                    architecture="stand-alone application",
                     license=lic_unknown,
                     programminglanguages=[prol_java, prol_scala])
     db.session.add(tool)
@@ -1628,7 +1706,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Ted Han and Aron Pilhofer",
                     maintainer="Ted Han and Aron Pilhofer",
                     softwarecategory=cat_jour,
-                    architecture="standalone",
+                    architecture="server application",
                     license=lic_mit,
                     programminglanguages=[prol_ruby])
     db.session.add(tool)
@@ -1640,7 +1718,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Gregor Wiedemann and Seid Muhie Yimam and Chris Biemann",
                     maintainer="Gregor Wiedemann and Seid Muhie Yimam and Chris Biemann",
                     softwarecategory=cat_jour,
-                    architecture="standalone",
+                    architecture="server application",
                     license=lic_agpl3,
                     programminglanguages=[prol_ruby])
     db.session.add(tool)
@@ -1652,7 +1730,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="",
                     maintainer="",
                     softwarecategory=cat_misc,
-                    architecture="package",
+                    architecture="library",
                 #    license=,
                     programminglanguages=[prol_r])
     db.session.add(tool)
@@ -1664,7 +1742,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c
                     developer="Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.",
                     maintainer="Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V. and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P. and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.",
                     softwarecategory=cat_misc,
-                    architecture="package",
+                    architecture="library",
                     license=lic_bsd,
                     programminglanguages=[prol_py])
     db.session.add(tool)
diff --git a/templates/export/softwares.jinja2 b/templates/export/softwares.jinja2
index 74d5f01d44118a5eae3bc64cf6d3e01086ff169e..1b7aa264249ded43c23a5e0095493eda6931df0b 100644
--- a/templates/export/softwares.jinja2
+++ b/templates/export/softwares.jinja2
@@ -4,10 +4,41 @@
 :sectnums:
 :sectnumlevels: 8
 
-{% for softwarecategory in softwareincategory %}
-== {{ softwarecategory[0].name }}
+== stand-alone applications
+{% for softwarecategory in standalonesoftwareincategory %}{% if softwarecategory[1].count() > 0 %}
+=== {{ softwarecategory[0].name }}
 _{{softwarecategory[0].short_description}}_
 {% for software in softwarecategory[1] %}
 link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {% if software.currentversion %}{{software.currentversion}}{% endif %} | {{software.license}} | {{software.architecture}} | {{ software.programminglanguages |map(attribute='name')|join(', ') }} | {{ software.languages |map(attribute='name')|join(', ') }}>
-{% endfor %}
-{% endfor %}
\ No newline at end of file
+{% endfor %}{% endif %}{% endfor %}
+
+== server applications
+{% for softwarecategory in serversoftwareincategory %}{% if softwarecategory[1].count() > 0 %}
+=== {{ softwarecategory[0].name }}
+_{{softwarecategory[0].short_description}}_
+{% for software in softwarecategory[1] %}
+link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {% if software.currentversion %}{{software.currentversion}}{% endif %} | {{software.license}} | {{software.architecture}} | {{ software.programminglanguages |map(attribute='name')|join(', ') }} | {{ software.languages |map(attribute='name')|join(', ') }}>
+{% endfor %}{% endif %}{% endfor %}
+
+== programming-frameworks/libraries etc.
+=== R
+{% for softwarecategory in libsoftwareincategory %}{% if softwarecategory[1].count() > 0 %}
+==== {{ softwarecategory[0].name }}
+_{{softwarecategory[0].short_description}}_
+{% for software in softwarecategory[1] %}
+link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {% if software.currentversion %}{{software.currentversion}}{% endif %} | {{software.license}} | {{software.architecture}} | {{ software.programminglanguages |map(attribute='name')|join(', ') }} | {{ software.languages |map(attribute='name')|join(', ') }}>
+{% endfor %}{% endif %}{% endfor %}
+=== Python
+{% for softwarecategory in libsoftwareincategory %}{% if softwarecategory[2].count() > 0 %}
+==== {{ softwarecategory[0].name }}
+_{{softwarecategory[0].short_description}}_
+{% for software in softwarecategory[2] %}
+link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {% if software.currentversion %}{{software.currentversion}}{% endif %} | {{software.license}} | {{software.architecture}} | {{ software.programminglanguages |map(attribute='name')|join(', ') }} | {{ software.languages |map(attribute='name')|join(', ') }}>
+{% endfor %}{% endif %}{% endfor %}
+=== Others
+{% for softwarecategory in libsoftwareincategory %}{% if softwarecategory[3].count() > 0 %}
+==== {{ softwarecategory[0].name }}
+_{{softwarecategory[0].short_description}}_
+{% for software in softwarecategory[3] %}
+link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {% if software.currentversion %}{{software.currentversion}}{% endif %} | {{software.license}} | {{software.architecture}} | {{ software.programminglanguages |map(attribute='name')|join(', ') }} | {{ software.languages |map(attribute='name')|join(', ') }}>
+{% endfor %}{% endif %}{% endfor %}