diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
index a48645ec87..3bda1283f7 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorServiceImpl.java
@@ -1,9 +1,7 @@
 package se.su.dsv.scipro.springdata.serviceimpls;
 
 import com.mysema.query.jpa.impl.JPAQuery;
-import com.mysema.query.types.OrderSpecifier;
-import com.mysema.query.types.Predicate;
-import com.mysema.query.types.Visitor;
+import com.mysema.query.types.*;
 import com.mysema.query.types.expr.BooleanExpression;
 import org.hibernate.hql.ast.tree.OrderByClause;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,9 +16,8 @@ import se.su.dsv.scipro.springdata.services.SupervisorService;
 import javax.annotation.Resource;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
-import java.util.Date;
-import java.util.List;
 
+import java.util.*;
 
 @Service ( "supervisorService" )
 @Transactional ( readOnly = true )
@@ -57,7 +54,22 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
         BooleanExpression isNewEmployee = employee.user.dateCreated.eq(dateCreated);
         OrderSpecifier<?> order = employee.user.lastName.asc();
         return queryDslPredicateExecutor.findAll((lastName).and(isNewEmployee), order);
-//return new JPAQuery(em).from(employee).where((lastName).and(isNewEmployee)).orderBy(order).list(employee);
     }
 
+    @Override
+    public Iterator<Employee> findSupervisorKeywords() {
+        QEmployee employee = QEmployee.employee;
+        /*   BooleanExpression lastName = employee.user.lastName.eq("Moattar")
+                        .or(employee.user.lastName.eq("Herder")
+                                .or(employee.user.lastName.eq("Larsson"))
+                                .or(employee.user.lastName.eq("Friis"))
+                                .or(employee.user.lastName.eq("Tholerus"))
+                                .or(employee.user.lastName.eq("Hallberg")));
+        */
+        OrderSpecifier<?> orderBySize = employee.keywords.keywords.size().desc();
+// where(lastName).
+        BooleanExpression employeeExists = employee.isNotNull();
+        return queryDslPredicateExecutor.findAll(employeeExists, orderBySize).iterator();
+//return new JPAQuery(em).from(employee).orderBy(orderBySize).list(employee);
+    }
 }
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
index 06d3ef722c..d76bec5c4e 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorService.java
@@ -2,6 +2,7 @@ package se.su.dsv.scipro.springdata.services;
 import se.su.dsv.scipro.data.dataobjects.Employee;
 
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -9,7 +10,10 @@ import java.util.List;
  * date: 2012 03 26
  */
 public interface SupervisorService extends CrudService<Employee,Long>, QueryService<Employee, Long> {
-    public List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders);
+    public //List<Employee>
+    List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders);
 
     public Iterable<Employee> findByUsersName(final Date dateCreated);
+
+    public Iterator<Employee> findSupervisorKeywords();
 }
diff --git a/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java b/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
index 230d9f3b80..3f3b762398 100644
--- a/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
+++ b/src/test/java/se/su/dsv/scipro/springdata/TestSupervisor.java
@@ -1,12 +1,9 @@
 package se.su.dsv.scipro.springdata;
 
-
-import org.apache.commons.lang.builder.CompareToBuilder;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Sort;
 import org.springframework.test.annotation.Rollback;
 import org.springframework.test.context.ContextConfiguration;
@@ -208,4 +205,42 @@ public class TestSupervisor {
         assertTrue(employeeList.get(0).equals(tholerus));
         assertTrue(employeeList.get(1).equals(herder));
     }
+
+
+    /**
+     *   Test for implementing a supervisorService with Spring Data
+     */
+    @Test
+    @Transactional
+    @Rollback
+    public void findNewSupervisorKeywords() {
+        List<Employee> employeeList = new ArrayList<Employee>();
+        Employee larsson = getEmployee("Ken", "Larsson", "kenlars@dsv.su.se", null);
+        Employee hallberg = getEmployee("David", "Hallberg", "dhallb@dsv.su.se", null);
+        Employee tholerus = getEmployee("Torgny", "Tholerus", "torgny@dsv.su.se", null);
+        Employee herder = getEmployee("Niklas", "Herder", "herder@dsv.su.se", null);
+        Employee moattar = getEmployee("Golrokh", "Moattar", "goli@dsv.su.se", null);
+        Employee friis = getEmployee("Fredrik", "Friis", "fre-fri@dsv.su.se", null);
+
+        Keyword keyword = createKeyword(keywordTypeWord, "JUnit", false);
+        herder.getKeywords().getAll().add(keyword);
+        keyword = createKeyword(keywordTypeWord, "Maven", false);
+        herder.getKeywords().getAll().add(keyword);
+        herder =  supervisorService.save(herder);
+
+        keyword = createKeyword(keywordTypeWord, "JUnit", false);
+        tholerus.getKeywords().getAll().add(keyword);
+        keyword = createKeyword(keywordTypeWord, "Maven", false);
+        tholerus.getKeywords().getAll().add(keyword);
+        keyword = createKeyword(keywordTypeWord, "Java", false);
+        tholerus.getKeywords().getAll().add(keyword);
+        tholerus =  supervisorService.save(tholerus);
+        Iterator<Employee> employeeIterator = supervisorService.findSupervisorKeywords();
+        while (employeeIterator.hasNext()) {
+            employeeList.add(employeeIterator.next());
+        }
+        assertFalse(employeeList.isEmpty());
+        assertTrue(employeeList.get(0).equals(tholerus));
+        assertTrue(employeeList.get(1).equals(herder));
+    }
 }