diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.html
index 68e12de8a0..2167576974 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.html
@@ -18,7 +18,11 @@
 		<table wicket:id="table" class="rounded-corner">
 		<thead>
 			<tr>
-			<th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th><th>Research Areas</th><th class="rounded-right-top">Regular keywords</th>
+			    <th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th>
+                <th>Research Areas</th>
+                <th class="rounded-right-top">
+                    <a href="#" wicket:id="numberOfRegularsSortLink">Regular keywords</a>
+                </th>
 			</tr>
 		</thead>
 		<tbody>
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
index ef005486bf..51ad32555a 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/AdminSupervisorKeywordPanel.java
@@ -1,7 +1,6 @@
 package se.su.dsv.scipro.admin.panels.match;
 
 import java.util.List;
-
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -9,21 +8,22 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.markup.repeater.data.DataView;
+import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.odlabs.wiquery.ui.dialog.Dialog;
 
 import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
 import se.su.dsv.scipro.data.dataobjects.Employee;
-import se.su.dsv.scipro.dataproviders.QueryableDataProvider;
 import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
 import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
 import se.su.dsv.scipro.match.dao.interfaces.SupervisorDaoParams;
 import se.su.dsv.scipro.match.dataobject.Keyword;
+import se.su.dsv.scipro.springdata.services.SupervisorService;
 
 public class AdminSupervisorKeywordPanel extends Panel {
 
@@ -32,6 +32,9 @@ public class AdminSupervisorKeywordPanel extends Panel {
     @SpringBean
 	private SupervisorDao supervisorDao;
 
+    @SpringBean
+    private SupervisorService supervisorService;
+
 	public AdminSupervisorKeywordPanel(String str) {
 		super(str);
         Dialog dialog = new Dialog("detailsDialog");
@@ -39,10 +42,12 @@ public class AdminSupervisorKeywordPanel extends Panel {
         WebMarkupContainer tableContainer = new WebMarkupContainer("table");
         SupervisorDaoParams params =  new SupervisorDaoParams();
         params.setSortOn("user.lastName", Sort.ASCENDING);
+        params.setSortOn("keywords.size()", Sort.ASCENDING);
         TextField<String> supervisorField = new TextField<String>("supervisorField", new Model<String>());
 		setUpTable(dialog, tableContainer, params);
 		setUpFiltering(tableContainer, params, supervisorField);
-	}
+//addSortLink("numberOfRegulars", "keywords.size()", tableContainer, params);
+    }
 
 	private void setUpFiltering(WebMarkupContainer tableContainer, SupervisorDaoParams params, TextField<String> supervisorField) {
 		FilterForm form = new FilterForm(tableContainer, params, supervisorField);
@@ -58,15 +63,46 @@ public class AdminSupervisorKeywordPanel extends Panel {
 		dialog.add(new EmptyPanel("dialogContent"));
 		add(dialog.setOutputMarkupId(true));
 	}
+
+    private void addSortLink(String markup, final String sortField, final WebMarkupContainer allContainer, final SupervisorDaoParams params) {
+        final AjaxLink<Void> sortLink = new AjaxLink<Void>(markup + "SortLink") {
+
+            private static final long serialVersionUID = -8463105615994034854L;
+
+            @Override
+            public void onClick(AjaxRequestTarget target) {
+                if (params.getDirection().equals(Sort.ASCENDING)) {
+                    params.setSortOn(sortField, Sort.DESCENDING);
+                } else {
+                    params.setSortOn(sortField, Sort.ASCENDING);
+                }
+                target.addComponent(allContainer);
+            }
+        };
+        allContainer.add(sortLink);
+    }
 	
 	private void setUpTable(final Dialog dialog, final WebMarkupContainer tableContainer, final SupervisorDaoParams params) {
-        QueryableDataProvider<Employee, SupervisorDaoParams> provider = new QueryableDataProvider<Employee, SupervisorDaoParams>(supervisorDao, params);
-        DataView<Employee> dataView = new DataView<Employee>("supervisorList", provider, 1000) {
+        final StringBuffer definedSortOrder = new StringBuffer();
+        definedSortOrder.append("user.firstName");
+        final StringBuffer definedSortDirection = new StringBuffer();
+        definedSortDirection.append("ASC");
+
+
+
+        final ListView<Employee> dataView = new ListView<Employee>("supervisorList", new LoadableDetachableModel<List<Employee>>() {
+            private static final long serialVersionUID = -2395796971679213814L;
+
+            @Override
+            protected List<Employee> load() {
+                return supervisorService.findAllEmployees(new org.springframework.data.domain.Sort(definedSortOrder.toString()));
+            }
+        }) {
 
             private static final long serialVersionUID = 3572766096237883198L;
 
             @Override
-            protected void populateItem(Item<Employee> item) {
+            protected void populateItem(ListItem<Employee> item) {
                 final Employee supervisor = item.getModelObject();
                 List<Keyword> areaKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.RESEARCH_AREA.toDbName());
                 List<Keyword> regularKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.REGULAR.toDbName());
@@ -98,20 +134,40 @@ public class AdminSupervisorKeywordPanel extends Panel {
             }
         };
 		final AjaxLink<Void> nameSortLink = new AjaxLink<Void>("nameSortLink") {
-
 			private static final long serialVersionUID = -6459164267551936706L;
-
 			@Override
 			public void onClick(AjaxRequestTarget target) {
-				if(params.getDirection().equals(Sort.ASCENDING)) {
-					params.setSortOn("user.lastName", Sort.DESCENDING);
+                org.springframework.data.domain.Sort sortOrder;
+                if(definedSortDirection.toString().equals("ASC")) {
+                    sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, "user.lastName");
+                    definedSortDirection.delete(0, definedSortDirection.length()-1);
+                    definedSortDirection.append("DESC");
                 } else {
-					params.setSortOn("user.lastName", Sort.ASCENDING);
+                    sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName");
+                    definedSortDirection.delete(0, definedSortDirection.length()-1);
+                    definedSortDirection.append("ASC");
                 }
+                dataView.setDefaultModelObject(supervisorService.findAllEmployees(sortOrder));
 				target.addComponent(tableContainer);
 			}
 		};
 		tableContainer.add(nameSortLink);
+
+        final AjaxLink<Void> numberOfRegularsSortLink = new AjaxLink<Void>("numberOfRegularsSortLink") {
+
+            private static final long serialVersionUID = 5809993580126828318L;
+
+            @Override
+            public void onClick(AjaxRequestTarget target) {
+                if(params.getDirection().equals(Sort.ASCENDING)) {
+                    params.setSortOn("keywords.size", Sort.DESCENDING);
+                } else {
+                    params.setSortOn("keywords.size", Sort.ASCENDING);
+                }
+                target.addComponent(tableContainer);
+            }
+        };
+        tableContainer.add(numberOfRegularsSortLink);
 		tableContainer.add(dataView);
 		add(tableContainer.setOutputMarkupId(true));
 	}