diff --git a/app.py b/app.py
index 3fe031c0d035e77dc0414b3c27c6de09e931a1a3..0af8fbbdfe9c052937633006e799f205fac37803 100644
--- a/app.py
+++ b/app.py
@@ -6,7 +6,9 @@ import pathlib
 from flask import Flask, flash, send_file
 from flask_sqlalchemy import SQLAlchemy
 from jinja2 import Template
+from markupsafe import Markup
 from sqlalchemy.ext.hybrid import hybrid_property
+from sqlalchemy.sql import expression, functions
 
 from wtforms import validators
 
@@ -94,22 +96,35 @@ class Matterofexpense(db.Model):
         return "{}".format(self.name)
 
 
+class SoftwareCategory(db.Model):
+    id = db.Column(db.Integer, primary_key=True)
+    name = db.Column(db.String(120))
+    short_description = db.Column(db.Text)
+
+    def __str__(self):
+        return "{}".format(self.name)
+
+
 class Software(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     name = db.Column(db.String(120))
-    short_description = db.Column(db.Text, nullable=False)
+    short_description = db.Column(db.String(120))
     developer = db.Column(db.String(120))
     lastchanged = db.Column(db.Date)
 
-
     license_id = db.Column(db.Integer(), db.ForeignKey(License.id))
     license = db.relationship(License, backref='softwares')
 
+    softwarecategory_id = db.Column(db.Integer(), db.ForeignKey(SoftwareCategory.id))
+    softwarecategory = db.relationship(SoftwareCategory, backref='software')
+
     matterofexpense_id = db.Column(db.Integer(), db.ForeignKey(Matterofexpense.id))
     matterofexpense = db.relationship(Matterofexpense, backref='softwares')
 
     features = db.relationship('Feature', secondary=software_features_table)
+
     languages = db.relationship('Language', secondary=software_languages_table)
+
     programminglanguages = db.relationship('Programminglanguage', secondary=software_programminglanguages_table)
 
     def __str__(self):
@@ -123,10 +138,12 @@ class Link(db.Model):
     url = db.Column(db.String(120))
 
     software_id = db.Column(db.Integer(), db.ForeignKey(Software.id))
-    software = db.relationship(Software, backref='Links')
+    software = db.relationship(Software, backref='links')
+
+    comment = db.Column(db.String(120))
 
     def __str__(self):
-        return "{}:{}".format(self.type,self.url)
+        return "<a href='#'>{}</a>:{}".format(self.type,self.url)
 
 
 # Flask views
@@ -156,7 +173,17 @@ inline_form_options = {
 }'''
 
 class AdvancedSoftwareView(sqla.ModelView):
+    column_sortable_list = ('name', ('license', ("license.name", "license.version")), 'lastchanged' , ('softwarecategory', 'softwarecategory.name'),)
+    column_list = ('name', 'license', 'softwarecategory', 'links', )
     inline_models = (Link,)
+    column_hide_backrefs = False
+
+    #def _user_formatter(view, context, model, name):
+    #    return Markup(for link in model.links)
+
+    #column_formatters = {
+    #    'links': _user_formatter
+    #}
 
     @action('advancedexport', 'AdvancedExport')
     def action_advancedexport(self, ids):
@@ -310,6 +337,7 @@ admin.add_view(AdvancedSoftwareView(Software, db.session))
 admin.add_view(sqla.ModelView(Feature, db.session))
 admin.add_view(sqla.ModelView(License, db.session, category="Other"))
 admin.add_view(sqla.ModelView(Link, db.session, category="Other"))
+admin.add_view(sqla.ModelView(SoftwareCategory, db.session, category="Other"))
 admin.add_sub_category(name="Links", parent_name="Other")
 admin.add_link(MenuLink(name='Back Home', url='/', category='Links'))
 
@@ -324,8 +352,24 @@ def build_sample_db():
 
     db.drop_all()
     db.create_all()
-    db.session.add(License(name="GPL", version="3.0"))
-    db.session.add(License(name="MIT"))
+    lic_gpl = License(name="GPL", version="3.0")
+    lic_apache = License(name="Apache", version="2.0")
+    lic_mit = License(name="MIT")
+    db.session.add(lic_gpl)
+    db.session.add(lic_apache)
+    db.session.add(lic_mit)
+
+    cat_tracking = SoftwareCategory(name="Tracking", short_description="")
+    db.session.add(cat_tracking)
+
+    aware = Software(name="AWARE", softwarecategory=cat_tracking, license=lic_apache)
+    db.session.add(aware)
+    db.session.add(Link(software=aware, type="website", url="http://www.awareframework.com/", comment=""))
+    db.session.add(Link(software=aware, type="repository", url="https://github.com/denzilferreira/aware-client", comment="android"))
+    db.session.add(Link(software=aware, type="repository", url="https://github.com/tetujin/aware-client-ios", comment="iOS"))
+    db.session.add(Link(software=aware, type="repository", url="https://github.com/tetujin/aware-client-osx", comment="OSX"))
+    db.session.add(Link(software=aware, type="repository", url="https://github.com/denzilferreira/aware-server", comment="server"))
+
 
     db.session.commit()
     return
diff --git a/sample_db.sqlite b/sample_db.sqlite
index 9f5332adfdf19c39b683be53d3b458be6f74306e..eac3f58be98c21776a2dc8da005f0dfc9829646e 100644
Binary files a/sample_db.sqlite and b/sample_db.sqlite differ