diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
index 282c25caf8..24d89c1df7 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html
@@ -7,15 +7,14 @@
 <body>
 	<wicket:extend>
 		<div class="span-24 last">
- 		<!-- Left column -->
-<!-- 			<div class="span-11 last"> -->
-<!-- 				<div wicket:id="cCLPanel"></div> -->
-<!-- 			</div> -->
-			<!-- Right column -->
-<!-- 			<div class="span-11 last"> -->
-				<div wicket:id="listCLPanel"></div>
-<!-- 				<div wicket:id="flcltp"></div> -->
-<!-- 			</div> -->
+
+            <div wicket:id="dialog">
+                <div wicket:id="editpanel"></div>
+            </div>
+
+				<!--<div wicket:id="listCLPanel"></div>-->
+            <div wicket:id="datapanel"></div>
+
 		</div>
 		</wicket:extend>
 </body>
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
index 6754ced4c7..26dc471f3a 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java
@@ -2,27 +2,61 @@ package se.su.dsv.scipro.admin.pages;
 
 import org.apache.wicket.PageParameters;
 
-import se.su.dsv.scipro.admin.panels.AdminListCheckListTemplatePanel;
-import se.su.dsv.scipro.data.enums.CheckListRole;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.model.IModel;
+import org.odlabs.wiquery.ui.dialog.Dialog;
+import se.su.dsv.scipro.checklists.panels.FunctionalEditChecklistTemplatePanel;
+import se.su.dsv.scipro.checklists.panels.FunctionalListCheckListTemplatePanel;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.datatables.checklist.CheckListTemplateDataPanel;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 
 /**
  * @author Fredrik Norberg - fnorbe@dsv.su.se
- *
  */
 
-@Authorization(authorizedRoles={Roles.SYSADMIN, Roles.ADMIN})
+@Authorization(authorizedRoles = {Roles.SYSADMIN, Roles.ADMIN})
 public class AdminCheckListPage extends AbstractAdminPage {
-	
 
-	public static final String MAIN_MENU_LABEL = "CheckLists";
-	
-	public AdminCheckListPage(PageParameters pp) {
-		super(pp);
-//		add(new CreateChecklistTemplatePanel("cCLPanel"));
-		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
-//		add(new FunctionalListCheckListTemplatePanel("flcltp"));
-	}
+
+    public static final String MAIN_MENU_LABEL = "CheckLists";
+    private Dialog dialog;
+    private CheckListTemplateDataPanel cltdp;
+
+    public AdminCheckListPage(PageParameters pp) {
+        super(pp);
+
+//		add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN));
+
+
+        dialog = new Dialog("dialog");
+        dialog.setModal(true);
+        dialog.setAutoOpen(false);
+        dialog.setWidth(550);
+        dialog.setHeight(700);
+        dialog.add(new EmptyPanel("editpanel"));
+        add(dialog);
+
+
+        add(cltdp = new CheckListTemplateDataPanel("datapanel", true) {
+            @Override
+            public void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
+                System.out.println(clicked.getObject().getCreator());
+                dialog.replace(new FunctionalEditChecklistTemplatePanel("editpanel", clicked.getObject()) {
+                    @Override
+                    public void onUpdate(AjaxRequestTarget target) {
+                        dialog.close(target);
+                        target.addComponent(cltdp);
+                    }
+                });
+                target.addComponent(dialog);
+                dialog.open(target);
+            }
+        });
+        cltdp.setOutputMarkupId(true);
+
+    }
 
 }
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
index 2256449158..be55dd8ce9 100644
--- a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java
@@ -83,6 +83,10 @@ public class ChecklistCategory extends DomainObject{
 			return false;
 		return true;
 	}
-	
+
+    @Override
+    public String toString(){
+        return categoryName;
+    }
 	
 }
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html
new file mode 100644
index 0000000000..316f72bbb5
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+	<wicket:panel>
+        <div>Filter by title or creator:</div>
+        <div wicket:id="filterStringPanel"></div>
+        <div>Rows per page: <span wicket:id="numberDropDown"></span></div>
+        <table wicket:id="datatable"></table>
+	</wicket:panel>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
new file mode 100644
index 0000000000..74b20738f2
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java
@@ -0,0 +1,151 @@
+package se.su.dsv.scipro.datatables.checklist;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.reusable.AjaxDropDown;
+import se.su.dsv.scipro.reusable.FilterBooleanPanel;
+import se.su.dsv.scipro.reusable.FilterStringPanel;
+import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * Author: fred-fri
+ * Date: 5/2/12
+ */
+public abstract class CheckListTemplateDataPanel extends Panel {
+
+    @SpringBean
+    public ChecklistTemplateService checklistTemplateService;
+
+    CheckListTemplateDataPanel cltdp; //must be kept as a reference to self for abstract method cascading
+
+    DataTable<CheckListTemplate> table;
+    NavigationToolbar navigationToolbar;
+    FilterStringPanel filterStringPanel;
+    Integer number;
+    AjaxDropDown<Integer> numberDropDown;
+    ChecklistTemplateProvider checklistTemplateProvider;
+
+    public abstract void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target);
+
+    public CheckListTemplateDataPanel(String id, boolean adminPrivileges) {
+        super(id);
+
+        cltdp = this;
+
+        filterStringPanel = new FilterStringPanel("filterStringPanel") {
+            @Override
+            public void onUpdateFilter(AjaxRequestTarget target) {
+                checklistTemplateProvider.setFilterString(getFilterString());
+                target.addComponent(table);
+            }
+        };
+        add(filterStringPanel);
+
+        number = new Integer(10);
+        ArrayList<Integer> numberList = new ArrayList<Integer>();
+        numberList.add(new Integer(10));
+        numberList.add(new Integer(25));
+        numberList.add(new Integer(100));
+
+        numberDropDown = new AjaxDropDown<Integer>("numberDropDown", new Model<Integer>(number), new Model<ArrayList<Integer>>(numberList)) {
+            @Override
+            public void onNewSelection(AjaxRequestTarget target, Integer objectSelected) {
+                table.setRowsPerPage(objectSelected);
+                target.addComponent(table);
+            }
+        };
+        add(numberDropDown);
+
+        IColumn[] columns = new IColumn[4];
+
+        columns[0] = new ClickableTitleColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
+            @Override
+            protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
+//                System.out.println(clicked.getObject().getName());
+                cltdp.onClick(clicked, target);
+            }
+        };
+        columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
+        columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories");
+        columns[3] = new ClickableOrderColumn<CheckListTemplate>(Model.of("Order"), "templateNumber", "templateNumber", adminPrivileges) {
+            @Override
+            protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target, boolean up) {
+                System.out.println(up);
+                if (up){
+                    checklistTemplateService.upChecklistTemplate(clicked.getObject());
+                    target.addComponent(table);
+                } else {
+                    checklistTemplateService.downChecklistTemplate(clicked.getObject());
+                    target.addComponent(table);
+                }
+            }
+        };
+
+        table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider =  new ChecklistTemplateProvider(), 10);
+        table.setOutputMarkupId(true);
+        table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table));
+        table.addTopToolbar(new HeadersToolbar(table, checklistTemplateProvider));
+        add(table);
+
+    }
+
+    private class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> {
+
+        private String filterString;
+
+        public ChecklistTemplateProvider() {
+            setSort("templateNumber", true);
+        }
+
+        @Override
+        public Iterator<? extends CheckListTemplate> iterator(int first, int count) {
+//            Sort(Direction direction, String... properties)
+//            new Sort(Sort.Direction.ASC, "name")
+            Sort sort;
+            if (getSort().isAscending()){
+                sort = new Sort(Sort.Direction.ASC, getSort().getProperty());
+            }
+            else {
+                sort = new Sort(Sort.Direction.DESC, getSort().getProperty());
+            }
+//            new Sort(Sort.Direction.ASC, getSort().toString())
+            
+            //Changed from count to table.getRowsPerPage to make pagination work.
+            //return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, sort)).iterator();
+            return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), table.getRowsPerPage(), sort)).iterator();
+        }
+
+        @Override
+        public int size() {
+            return safeLongToInt(checklistTemplateService.count(filterString));
+        }
+
+        @Override
+        public IModel<CheckListTemplate> model(CheckListTemplate object) {
+            return Model.of(object);
+        }
+
+        public void setFilterString(String filterString){
+            this.filterString = filterString;
+        }
+    }
+
+    public static int safeLongToInt(long l) {
+        if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) {
+            throw new IllegalArgumentException
+                    (l + " cannot be cast to int without changing its value.");
+        }
+        return (int) l;
+    }
+}
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
new file mode 100644
index 0000000000..40a1d9ccd9
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+    <span wicket:id="label"></span> <button wicket:id="uplink">+</button> <button wicket:id="downlink">-</button>
+</wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
new file mode 100644
index 0000000000..683882351f
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java
@@ -0,0 +1,70 @@
+package se.su.dsv.scipro.datatables.checklist;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import se.su.dsv.scipro.icons.ImageObject;
+
+/**
+ * Author: fred-fri
+ * Date: 5/4/12
+ */
+public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> {
+
+    private boolean adminPrivileges;
+    private final String property;
+
+    public ClickableOrderColumn(IModel<String> displayModel,
+                                String property, boolean adminPrivileges) {
+        this(displayModel, property, null, adminPrivileges);
+    }
+
+    public ClickableOrderColumn(IModel<String> displayModel,
+                                String property, String sort, boolean adminPrivileges) {
+        super(displayModel, sort);
+        this.property = property;
+        this.adminPrivileges = adminPrivileges;
+    }
+
+    public void populateItem(Item<ICellPopulator<T>> cellItem,
+                             String componentId, IModel<T> rowModel) {
+        cellItem.add(new LinkPanel(componentId, rowModel,
+                new PropertyModel<Object>(rowModel, property)));
+    }
+
+    protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target, boolean up);
+
+    private class LinkPanel extends Panel {
+        public LinkPanel(String id, IModel<T> rowModel, IModel<?>
+                labelModel) {
+            super(id);
+
+            add(new Label("label", labelModel));
+
+            AjaxLink<T> uplink = new AjaxLink<T>("uplink", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickableOrderColumn.this.onClick(getModel(), target, true);
+                }
+            };
+            uplink.setVisible(adminPrivileges);
+            add(uplink);
+
+            AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickableOrderColumn.this.onClick(getModel(), target, false);
+                }
+            };
+            downlink.setVisible(adminPrivileges);
+            add(downlink);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html
new file mode 100644
index 0000000000..e3845b572b
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html
@@ -0,0 +1,3 @@
+<wicket:panel>
+    <a wicket:id="link"><span wicket:id="label"></span></a>
+</wicket:panel>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java
new file mode 100644
index 0000000000..ff94edf21d
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java
@@ -0,0 +1,66 @@
+package se.su.dsv.scipro.datatables.checklist;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * Author: fred-fri
+ * Date: 5/4/12
+ */
+public abstract class ClickableTitleColumn<T> extends AbstractColumn<T> {
+
+    private final String property;
+
+    public ClickableTitleColumn(IModel<String> displayModel,
+                                String property) {
+        this(displayModel, property, null);
+    }
+
+    public ClickableTitleColumn(IModel<String> displayModel,
+                                String property, String sort) {
+        super(displayModel, sort);
+        this.property = property;
+    }
+
+    public void populateItem(Item<ICellPopulator<T>> cellItem,
+                             String componentId, IModel<T> rowModel) {
+        cellItem.add(new LinkPanel(componentId, rowModel,
+                new PropertyModel<Object>(rowModel, property)));
+    }
+
+    protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target);
+
+    private class LinkPanel extends Panel {
+        public LinkPanel(String id, IModel<T> rowModel, IModel<?>
+                labelModel) {
+            super(id);
+
+//            Link<T> link = new Link<T>("link", rowModel) {
+//                @Override
+//                public void onClick() {
+//                    ClickableTitleColumn.this.onClick(getModel());
+//                }
+//            };
+//            add(link);
+//            link.add(new Label("label", labelModel));
+
+            AjaxLink<T> link = new AjaxLink<T>("link", rowModel) {
+                @Override
+                public void onClick(AjaxRequestTarget target) {
+                    ClickableTitleColumn.this.onClick(getModel(), target);
+                }
+            };
+            add(link);
+            link.add(new Label("label", labelModel));
+
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
new file mode 100644
index 0000000000..bdee65bb50
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java
@@ -0,0 +1,17 @@
+package se.su.dsv.scipro.springdata.repos;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.querydsl.QueryDslPredicateExecutor;
+import org.springframework.transaction.annotation.Transactional;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+@Transactional(readOnly = true)
+public interface ChecklistTemplateRepo extends JpaRepository<CheckListTemplate, Long>, QueryDslPredicateExecutor<CheckListTemplate> {
+
+    CheckListTemplate findByTemplateNumber(int templateNumber);
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
index 8d00eae6e7..cf65f607b4 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java
@@ -43,8 +43,13 @@ public class AbstractServiceImpl<T, ID extends Serializable> implements CrudServ
 		return repository.findOne(id);
 	}
 
+    @Override
+    public Iterable<T> findAll() {
+        return repository.findAll();
+    }
 
-	/**
+
+    /**
 	 * Returns whether an entity with the given id exists.
 	 *
 	 * @param id
diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
new file mode 100644
index 0000000000..fb42b2cebd
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java
@@ -0,0 +1,103 @@
+package se.su.dsv.scipro.springdata.serviceimpls;
+
+import com.mysema.query.types.expr.BooleanExpression;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+import se.su.dsv.scipro.data.dataobjects.QCheckListTemplate;
+import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo;
+import se.su.dsv.scipro.springdata.services.ChecklistTemplateService;
+
+
+import javax.annotation.Resource;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+@Service ( "checkListTemplateService" )
+@Transactional ( readOnly = true )
+public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckListTemplate, Long> implements ChecklistTemplateService {
+
+	@Resource
+	private ChecklistTemplateRepo checklistTemplateRepo;
+
+	@Autowired
+	public ChecklistTemplateServiceImpl(
+            @Qualifier("checklistTemplateRepo")
+            ChecklistTemplateRepo checklistTemplateRepo) {
+		super(checklistTemplateRepo, checklistTemplateRepo);
+		System.out.println("CheckListTemplateServiceImpl instantiating...");
+	}
+
+    @Override
+    public Page<CheckListTemplate> findAll(Pageable pageable) {
+        return checklistTemplateRepo.findAll(pageable);
+    }
+
+    @Override
+    public Page<CheckListTemplate> find(String filterString, Pageable pageable) {
+        if (filterString==null || filterString.isEmpty()){
+            return checklistTemplateRepo.findAll(pageable);
+        }
+        else {
+            return checklistTemplateRepo.findAll(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString)), pageable);
+        }
+    }
+
+    @Override
+    public Long count(String filterString) {
+        if (filterString==null || filterString.isEmpty()){
+            return checklistTemplateRepo.count();
+        }
+        else {
+            return checklistTemplateRepo.count(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString)));
+        }
+    }
+
+    @Transactional ( readOnly = false )
+    @Override
+    public void upChecklistTemplate(CheckListTemplate checkListTemplate) {
+        //if there is one above
+        if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1) !=null){
+            //find the one with value 1 higher
+            CheckListTemplate downChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1);
+            //give that one the one to be upped's value
+            downChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber());
+            //increase the value of the one to be upped with 1
+            checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() + 1);
+            //save both
+            checklistTemplateRepo.save(downChecklistTemplate);
+            checklistTemplateRepo.save(checkListTemplate);
+        }
+    }
+
+    @Transactional ( readOnly = false )
+    @Override
+    public void downChecklistTemplate(CheckListTemplate checkListTemplate) {
+        //if there is one below
+        if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1) != null){
+            //find the one with value 1 lower
+            CheckListTemplate upChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1);
+            //give that one the one to be downed's value
+            upChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber());
+            //decrease the value of the one to be downed with 1
+            checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() -1);
+            //save both
+            checklistTemplateRepo.save(upChecklistTemplate);
+            checklistTemplateRepo.save(checkListTemplate);
+        }
+    }
+
+    private BooleanExpression filterStringIsCreatorName(String filterString){
+        return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString));
+    }
+
+    private BooleanExpression filterStringIsChecklistTemplateName(String filterString){
+        return QCheckListTemplate.checkListTemplate.name.contains(filterString);
+    }
+}
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
new file mode 100644
index 0000000000..91b506aee9
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java
@@ -0,0 +1,18 @@
+package se.su.dsv.scipro.springdata.services;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+/**
+ * @author: fred-fri
+ * date: 2012 03 26
+ */
+public interface ChecklistTemplateService extends CrudService<CheckListTemplate, Long>, QueryService<CheckListTemplate, Long> {
+
+    Page<CheckListTemplate> findAll(Pageable pageable);
+    Page<CheckListTemplate> find(String filterString, Pageable pageable);
+    Long count(String filterString);
+    void upChecklistTemplate(CheckListTemplate checkListTemplate);
+    void downChecklistTemplate(CheckListTemplate checkListTemplate);
+}
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
index 28a2d5e65b..3e5c55aeba 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java
@@ -27,6 +27,8 @@ public abstract interface CrudService<T, ID> {
 	 */
 	T findOne(ID id);
 
+    Iterable<T> findAll();
+
 	/**
 	 * Returns whether an entity with the given id exists.
 	 *