diff --git a/src/main/java/se/su/dsv/scipro/SciProApplication.java b/src/main/java/se/su/dsv/scipro/SciProApplication.java
index 3660cc412f..193595d9f2 100644
--- a/src/main/java/se/su/dsv/scipro/SciProApplication.java
+++ b/src/main/java/se/su/dsv/scipro/SciProApplication.java
@@ -42,7 +42,6 @@ import se.su.dsv.scipro.admin.pages.settings.AdminGeneralSettingsPage;
 import se.su.dsv.scipro.admin.pages.settings.AdminPeerSettingsPage;
 import se.su.dsv.scipro.admin.pages.settings.AdminServerEnvironmentSettingsPage;
 import se.su.dsv.scipro.basepages.DemoPage;
-import se.su.dsv.scipro.basepages.Inte;
 import se.su.dsv.scipro.basepages.errorpages.AccessDeniedPage;
 import se.su.dsv.scipro.basepages.errorpages.CustomErrorPageFactory;
 import se.su.dsv.scipro.basepages.errorpages.InternalErrorPage;
@@ -62,12 +61,6 @@ import se.su.dsv.scipro.json.pages.JsonSentMessagePage;
 import se.su.dsv.scipro.json.pages.JsonSetReadPage;
 import se.su.dsv.scipro.json.pages.JsonSetStatusPage;
 import se.su.dsv.scipro.json.pages.JsonStatusPage;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableCategoryResourcePage;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableResourcePage;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableTagResourcePage;
-import se.su.dsv.scipro.knol.resource.page.ResourcePage;
-import se.su.dsv.scipro.log.pages.ProjectLogPage;
-import se.su.dsv.scipro.log.pages.SupervisorLogPage;
 import se.su.dsv.scipro.loginlogout.pages.LoginPage;
 import se.su.dsv.scipro.loginlogout.pages.LogoutPage;
 import se.su.dsv.scipro.message.pages.PrivateMessagesPage;
@@ -172,7 +165,6 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
 		mountBookmarkablePage("login", LoginPage.class);
 		mountBookmarkablePage("logout", LogoutPage.class);
 		mountBookmarkablePage("demo", DemoPage.class);
-		mountBookmarkablePage("inte", Inte.class);
 		
 		/*
 		 * Pop-up pages
@@ -194,14 +186,6 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
 		mountBookmarkablePage("json/status", JsonStatusPage.class);
 		mountBookmarkablePage("json/setstatus", JsonSetStatusPage.class);
 		
-		/*
-		 * Resource pages
-		 */
-		mountBookmarkablePage("resource", ResourcePage.class);
-		mountBookmarkablePage("resource/category", BookmarkableCategoryResourcePage.class);
-		mountBookmarkablePage("resource/resource", BookmarkableResourcePage.class);
-		mountBookmarkablePage("resource/tag", BookmarkableTagResourcePage.class);
-		
 		/*
 		 * Admin pages
 		 */
@@ -235,7 +219,6 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
 		mountBookmarkablePage("noproject", NoActiveProjectPage.class);
 		mountBookmarkablePage("project/checklist", ProjectChecklistPage.class);
 		mountBookmarkablePage("project/checklist/viewchecklist", ProjectViewCheckListPage.class);
-		mountBookmarkablePage("project/notes", ProjectLogPage.class);
 		mountBookmarkablePage("projectideas", ProjectIdeaPage.class);
 		mountBookmarkablePage("projectideas/submit", ProjectIdeaSubmissionPage.class);
 		/*
@@ -247,7 +230,6 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
 		mountBookmarkablePage("supervisor/templates/editor", SupervisorScheduleTemplatesEditorPage.class);
 		mountBookmarkablePage("supervisor/templates", SupervisorScheduleTemplatesPage.class);
 		mountBookmarkablePage("supervisor/project/details", SupervisorProjectDetailsPage.class);
-		mountBookmarkablePage("supervisor/project/details/notes", SupervisorLogPage.class);
 		mountBookmarkablePage("supervisor/project/details/checklist", SupervisorChecklistPage.class);
 		mountBookmarkablePage("supervisor/project/details/addchecklist", SupervisorAddCheckListToProjectPage.class);
 		mountBookmarkablePage("supervisor/antiplagiarism", SupervisorAntiPlagiarismLinkPage.class);
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 3806796ffb..6754ced4c7 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
@@ -3,8 +3,6 @@ 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.checklists.panels.CreateChecklistTemplatePanel;
-import se.su.dsv.scipro.checklists.panels.FunctionalListCheckListTemplatePanel;
 import se.su.dsv.scipro.data.enums.CheckListRole;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminProjectPartnerPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminProjectPartnerPage.java
index d3ac167610..04fff1229b 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminProjectPartnerPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminProjectPartnerPage.java
@@ -46,7 +46,7 @@ public class AdminProjectPartnerPage extends AbstractAdminPage {
 			@Override
 			public void onSubmit() {
 				settings.setProjectPartnerDaysToLive(amountOfDays);
-				generalSystemSettingsDao.save(settings);
+				settings = generalSystemSettingsDao.save(settings);
 				info("OK");
 			}
 		});
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/match/AdminExemptionCreatePanel.java b/src/main/java/se/su/dsv/scipro/admin/pages/match/AdminExemptionCreatePanel.java
index 267decc14b..43d0964362 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/match/AdminExemptionCreatePanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/match/AdminExemptionCreatePanel.java
@@ -68,7 +68,7 @@ public class AdminExemptionCreatePanel extends Panel {
             exemption.setGrantedBy(SciProSession.get().getUser());
             exemption.setAuthor(authorDao.getOrCreate(studentSelector.getModelObject().getUser()));
             try {
-                exemptionDao.save(exemption);
+                exemption = exemptionDao.save(exemption);
                 info("Exemption created.");
             } catch (DataIntegrityViolationException e) {
                 error("Only one exemption per author and project class allowed.");
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java
index 46fa4e3a85..ae2872b405 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java
@@ -63,7 +63,7 @@ public class AutomaticMatchPanel extends Panel {
                             for (Match match : result.matches) {
                                 match.setCreatedBy(SciProSession.get().getUser());
                                 match.setStatus(Match.Status.PUBLISHED);
-                                matchDao.save(match);
+                                match = matchDao.save(match);
                             } 
                             info("Saved " + result.matches.size() + " matches");
                         } catch (Exception e) {
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminListCheckListTemplatePanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/AdminListCheckListTemplatePanel.java
index c38a5e27d8..a07303841c 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/AdminListCheckListTemplatePanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminListCheckListTemplatePanel.java
@@ -129,7 +129,7 @@ public class AdminListCheckListTemplatePanel extends Panel{
 						tmp.setCategories(categoryPanel.getSelectedCategories());
 						List<CheckListTemplate> templates = checkListTemplateDao.findTemplates();
 						tmp.setTemplateNumber(templates.size()-1);
-						checkListTemplateDao.save(tmp);
+						tmp = checkListTemplateDao.save(tmp);
 						target.addComponent(container);
 						dialog.close(target);
 					}
@@ -277,7 +277,7 @@ public class AdminListCheckListTemplatePanel extends Panel{
 							tmp.setName(nameField.getModelObject());
 							
 							tmp.setCategories(categoryPanel.getSelectedCategories());
-							checkListTemplateDao.save(tmp);
+							tmp = checkListTemplateDao.save(tmp);
 							target.addComponent(container);
 							dialog.close(target);
 						}
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/ManualMatchPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/ManualMatchPanel.java
index 54b209e831..aa5711a3f7 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/ManualMatchPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/ManualMatchPanel.java
@@ -41,13 +41,15 @@ public class ManualMatchPanel extends Panel {
 	private Form<Employee> matchForm;
 	private AutocompleteComponent<Employee> autocompleteSupervisorField;
 	private Long supervisorId;
-	public ManualMatchPanel(String id, IModel<Match> matchModel) {
+    private boolean confirmed;
+	public ManualMatchPanel(String id, IModel<Match> matchModel, final boolean confirmed__) {
 		super(id);
 		supervisorId = matchModel.getObject().getSupervisor() != null ? matchModel.getObject().getSupervisor().getId() : 0L;
 		setOutputMarkupPlaceholderTag(true);
 		currentFragment = createButtonFragment();
 		alternateFragment = createMatchFragment(matchModel);
 		add(currentFragment);
+        confirmed = confirmed__;
 	}
 	
 	private Fragment createButtonFragment() {
@@ -95,7 +97,11 @@ public class ManualMatchPanel extends Panel {
 			@Override
 			public void onSubmit() {
 				matchModel.getObject().setSupervisor(autocompleteSupervisorField.getModelObject());
-                matchModel.getObject().setStatus(Status.CONFIRMED);
+                if(confirmed) {
+                    matchModel.getObject().setStatus(Status.CONFIRMED);
+                } else {
+                    matchModel.getObject().setStatus(Status.PUBLISHED);
+                }
                 matchDao.changeStatus(SciProSession.get().getUser(), matchModel.getObject(), null);
 			}
         };
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.html
index d6ce9e4227..8bd13bb183 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.html
@@ -4,7 +4,7 @@
 <body>
 	<wicket:panel>
 		<wicket:enclosure child="manual">
-			<div wicket:id="manual" class="append-bottom"></div>
+			<!--<div wicket:id="manual" class="append-bottom"></div>-->
 			<div wicket:id="watson"></div>
 		</wicket:enclosure>
 	</wicket:panel>
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.java
index 7563fd8f90..52d566707f 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ManualWatsonPanel.java
@@ -16,7 +16,7 @@ public class ManualWatsonPanel extends Panel {
 	public ManualWatsonPanel(String id, IModel<ProjectIdea> model) {
 		super(id);
 		if (model.getObject()!=null){
-			add(new ManualMatchPanel("manual", new PropertyModel<Match>(model, "match")));
+			add(new ManualMatchPanel("manual", new PropertyModel<Match>(model, "match"), true));
 			add(new WatsonInfoPanel("watson", model.getObject().getMatch().getProjectIdea()));
 		}
 	}
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html
index ffa5197191..122024a6fd 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html
@@ -6,11 +6,14 @@
 			<div wicket:id="removeAuthorPanel"></div>
 		<form wicket:id="form">
 
-			<div class="prepend-top">If you want to match and suggest this
+			<div class="prepend-top">If you want to match (CONFIRM) this
 				idea to a supervisor or reviewer manually, you can do so.</div>
 			<div wicket:id="manualMatchPanel"></div>
+            <div class="prepend-top">If you want to suggest (PUBLISH) this
+                idea to a supervisor or reviewer manually, you can do so.</div>
+            <div wicket:id="manualSuggPanel"></div>
 			<div class="prepend-top">If this project idea is poorly
-				written, it should refused, which means it will be sent back to the
+				written, it should be refused, which means it will be sent back to the
 				authors for rewriting.</div>
 			<button wicket:id="sendBackButton">Refuse project idea</button>
 			<div class="prepend-top">If this project idea has been
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java
index 2788a1d13c..53462d73f0 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java
@@ -19,14 +19,14 @@ public class ProjectIdeaActionPanel extends Panel {
 
     @SpringBean
     private MatchDao matchDao;
-    private ManualMatchPanel manualMatchPanel;
-
 
     public ProjectIdeaActionPanel(String id, final IModel<Match> matchModel) {
 		super(id);
 		add(new ProjectIdeaRemoveAuthorPanel("removeAuthorPanel", new Model(matchModel.getObject().getProjectIdea())).setVisible(matchModel.getObject().getProjectIdea().getAuthors().size()>1));
 		Form<Match> form = new Form<Match>("form", matchModel);
-		form.add(manualMatchPanel = new ManualMatchPanel("manualMatchPanel", matchModel));
+
+        form.add(new ManualMatchPanel("manualMatchPanel", matchModel, true));
+        form.add(new ManualMatchPanel("manualSuggPanel", matchModel, false));
 
 		form.add(new Button("sendBackButton") {
 			private static final long serialVersionUID = 1L;
diff --git a/src/main/java/se/su/dsv/scipro/basepages/Inte.java b/src/main/java/se/su/dsv/scipro/basepages/Inte.java
deleted file mode 100644
index 58e5ab1790..0000000000
--- a/src/main/java/se/su/dsv/scipro/basepages/Inte.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package se.su.dsv.scipro.basepages;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.model.Model;
-
-import se.su.dsv.scipro.knol.resource.page.StaticImage;
-
-public class Inte extends PublicPage {
-
-	private StaticImage firstImage, secondImage;
-	
-
-	public Inte(final PageParameters pp){
-		super(pp);
-		
-		firstImage = new StaticImage("firstImage", new Model<String>(
-				"images/icons/bullet_ball_glass_green.png"));
-		secondImage = new StaticImage("secondImage", new Model<String>(
-				"images/icons/bullet_ball_glass_yellow.png"));
-		
-		
-		add(firstImage);
-		add(secondImage);
-		
-		secondImage.setVisible(false);
-		
-		
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/basepanels/UserSettingsPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/UserSettingsPanel.java
index 616afab588..8552746dd1 100644
--- a/src/main/java/se/su/dsv/scipro/basepanels/UserSettingsPanel.java
+++ b/src/main/java/se/su/dsv/scipro/basepanels/UserSettingsPanel.java
@@ -127,7 +127,7 @@ public class UserSettingsPanel extends Panel {
 		public void onSubmit(){
 //			UserSettings userSettings = userSettingsDao.reLoad(getModelObject());
 			SciProSession.get().setActiveProject(userSettings.getActiveProject());
-			userSettingsDao.save(userSettings);
+			userSettings = userSettingsDao.save(userSettings);
 			setResponsePage(this.getPage().getClass(),this.getPage().getPageParameters());	
 		}
 	}//UserSettingsForm
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
index 3b9a2f16f4..4c16810918 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/AnswerDialogPanel.java
@@ -95,7 +95,7 @@ public class AnswerDialogPanel extends Panel {
                 clAnswer.setComment(comment);
                 clq = checkListQuestionDao.reLoad(clq);
                 clq.addAnswer(checkListAnswerDao.save(clAnswer));
-                checkListQuestionDao.save(clq);
+                clq = checkListQuestionDao.save(clq);
                 setResponsePage(getPage());            
             }
         }
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.html b/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.html
deleted file mode 100644
index e1bb8f641d..0000000000
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html>
-<html
-	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<head>
-<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
-</head>
-<body>
-
-	<wicket:panel>
-
-		<div class="span-10 last">
-			<form wicket:id="form">
-				<div wicket:id="feedbackPanel"></div>
-				<div>
-					<div>Template name</div>
-					<input wicket:id="templateName" type="text" />
-				</div>
-				<p></p>
-				<div wicket:id="categoryPanel"></div>
-				<p></p>
-				<div>Question</div>
-				<div>
-					<form wicket:id="addQuestionForm">
-						<div>
-							<input wicket:id="question" type="text" />
-						</div>
-						<input wicket:id="addQuestionButton" type="submit" />
-						<p></p>
-						<div wicket:id="container">
-							<table class="rounded-corner">
-								<thead>
-									<tr>
-										<th class="rounded-left-top rounded-left-right">Questions</th>
-									</tr>
-								</thead>
-								<tfoot>
-									<tr>
-										<td colspan="1" class="rounded-foot">&nbsp;</td>
-									</tr>
-								</tfoot>
-								<tbody>
-									<tr wicket:id="questions">
-										<td wicket:id="questionLabel"></td>
-									</tr>
-								</tbody>
-
-							</table>
-						</div>
-					</form>
-				</div>
-				<p></p>
-				<input wicket:id="save" type="submit" />
-			</form>
-		</div>
-	</wicket:panel>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.java
deleted file mode 100644
index 03ed06258e..0000000000
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/CreateChecklistTemplatePanel.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package se.su.dsv.scipro.checklists.panels;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-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.RequiredTextField;
-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.FeedbackPanel;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.SciProSession;
-import se.su.dsv.scipro.admin.pages.AdminCheckListPage;
-import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
-import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
-import se.su.dsv.scipro.data.dataobjects.ChecklistCategory;
-
-
-/**
- * @author fnorbe@dsv.su.se
- */
-
-public class CreateChecklistTemplatePanel extends Panel {
-
-	private static final long serialVersionUID = 8862892008428526067L;
-
-	@SpringBean
-	private CheckListTemplateDao checkListTemplateDao;
-
-	private String question = "";
-	private String title = "";
-	
-	private CheckListTemplate checkListTemplate = new CheckListTemplate();
-	
-
-	public CreateChecklistTemplatePanel(String id) {
-		super(id);
-
-		question = "";
-		title = "";
-		
-		final FeedbackPanel feedbackPanel = new FeedbackPanel("feedbackPanel");
-		feedbackPanel.setOutputMarkupId(true);
-
-		final ChecklistCategoryPanel categoryPanel = new ChecklistCategoryPanel("categoryPanel", new ArrayList<ChecklistCategory>());
-		
-		Form<CheckListTemplate> form = new Form<CheckListTemplate>("form");
-		final Form<CheckListTemplate> addQuestionForm = new Form<CheckListTemplate>("addQuestionForm");
-		final TextField<String> titleField = new RequiredTextField<String>("templateName",
-				new PropertyModel<String>(this, "title"));
-		titleField.setOutputMarkupId(true);
-		final TextField<String> questionField = new TextField<String>("question",
-				new PropertyModel<String>(this, "question"));
-		questionField.setOutputMarkupId(true);
-		questionField.setRequired(false);
-
-		final IModel<List<String>> questionModel = new LoadableDetachableModel<List<String>>(){
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected List<String> load() {
-				return checkListTemplate.getQuestions();
-			}
-		};
-		
-		final WebMarkupContainer container = new WebMarkupContainer("container");
-		container.setOutputMarkupId(true);
-		ListView<String> listView = new ListView<String>("questions", questionModel) {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void populateItem(ListItem<String> item) {
-				Label question = new Label("questionLabel", item.getModel().getObject());
-				item.add(question);
-			}
-		};
-		
-		container.add(listView);
-		
-		AjaxButton save = new AjaxButton("save", new Model<String>("Save template")) {
-
-		
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-				
-				if(checkListTemplate.getQuestions() == null){
-					
-				}else{
-				
-					checkListTemplate.setCreator(SciProSession.get().getUser());
-					checkListTemplate.setName(title);
-					checkListTemplate.setCategories(categoryPanel.getSelectedCategories());
-					checkListTemplateDao.save(checkListTemplate);
-					checkListTemplate = new CheckListTemplate();
-					title ="";
-					question="";
-					target.addComponent(container);
-					target.addComponent(titleField);
-					setResponsePage(new AdminCheckListPage(new PageParameters()));
-					
-				}			
-			}
-			
-			@Override
-		    protected void onError (final AjaxRequestTarget target, final Form<?> form) {
-		        target.addComponent(feedbackPanel);
-		        
-		    }
-		};
-		
-		AjaxButton addQuestionButton = new AjaxButton("addQuestionButton", new Model<String>("Add question")) { static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-
-					try{
-						checkListTemplate.addQuestion(new String(question));
-						questionModel.detach();
-						question  = "";
-						target.addComponent(questionField);
-						target.addComponent(container);
-					}catch(NullPointerException npe){
-						feedbackPanel.error("Question cant be empty");
-						target.addComponent(feedbackPanel);
-						
-					}
-			}
-		};
-		
-		addQuestionForm.add(questionField);
-		addQuestionForm.add(container);
-		addQuestionForm.add(addQuestionButton);
-		form.add(feedbackPanel);
-		form.add(titleField);
-		form.add(categoryPanel);
-		form.add(addQuestionForm);
-		form.add(save);
-		
-		add(form);
-
-	};
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/FunctionalEditChecklistTemplatePanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/FunctionalEditChecklistTemplatePanel.java
index 52d6cafa93..d2a911976a 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/FunctionalEditChecklistTemplatePanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/FunctionalEditChecklistTemplatePanel.java
@@ -5,16 +5,14 @@ import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.odlabs.wiquery.ui.dialog.Dialog;
 
-import se.su.dsv.scipro.admin.pages.AdminCheckListPage;
 import se.su.dsv.scipro.admin.panels.AdminViewCheckListTemplatePanel;
 import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
 import se.su.dsv.scipro.data.dao.interfaces.ChecklistCategoryDao;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
-import se.su.dsv.scipro.data.dataobjects.ProjectScheduleEvent;
 
 public abstract class FunctionalEditChecklistTemplatePanel extends Panel{
 	private static final long serialVersionUID = 1L;
@@ -32,7 +30,7 @@ public abstract class FunctionalEditChecklistTemplatePanel extends Panel{
 		if (clt.getId()!=null)
 			clt = checklistTemplateDao.reLoad(clt);
 
-		form = new ChecklistTemplateForm("checklistTemplateForm", clt);
+		form = new ChecklistTemplateForm("checklistTemplateForm", new Model<CheckListTemplate>(clt));
 		add(form);
 	}
 	
@@ -45,24 +43,18 @@ public abstract class FunctionalEditChecklistTemplatePanel extends Panel{
 	public class ChecklistTemplateForm extends Form{
 		private static final long serialVersionUID = 1L;
 
-		private transient String name; //no need to serialize this
-		private CheckListTemplate clt;
-
-		public ChecklistTemplateForm(String id, final CheckListTemplate clt) {
+		public ChecklistTemplateForm(String id, final Model<CheckListTemplate> cltModel) {
 			super(id);
 
-			this.clt = clt;
-			name = clt.getName();
-			add(new TextField<String>("nameTextField", new PropertyModel<String>(this, "name")));
-			add(new ChecklistCategoryPanel("categoryPanel", clt.getCategories()));
-			add(new AdminViewCheckListTemplatePanel("avcltp", clt));
+			add(new TextField<String>("nameTextField", new PropertyModel<String>(cltModel.getObject(), "name")));
+			add(new ChecklistCategoryPanel("categoryPanel", cltModel.getObject().getCategories()));
+			add(new AdminViewCheckListTemplatePanel("avcltp", cltModel.getObject()));
 
 			add(new AjaxButton("saveButton") {
 				private static final long serialVersionUID = 1L;
 				@Override
 				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					clt.setName(name);
-					checklistTemplateDao.save(clt);
+					cltModel.setObject(checklistTemplateDao.save(cltModel.getObject()));
 					onUpdate(target);
 				}
 			}); 
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListPanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListPanel.java
index f13b6767a0..5253e6485b 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListPanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListPanel.java
@@ -14,6 +14,7 @@ import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import se.su.dsv.scipro.SciProSession;
@@ -56,19 +57,19 @@ public class ListCheckListPanel extends Panel {
 	@SpringBean
 	CheckListController checkListController;
 	private static final long serialVersionUID = 1L;
-	private Project project;
+	private Model<Project> projectModel;
 	private final ListView<CheckList> checkLists;
 	private Label emptyLabel;
 
-	public ListCheckListPanel(String id, final CheckListRole role, final Project project) {
+	public ListCheckListPanel(String id, final CheckListRole role, final Model<Project> projectModel) {
 		super(id);
-		assert(project != null);
-		this.project = project;
+		assert(projectModel.getObject() != null);
+		this.projectModel = projectModel;
 		final IModel<List<CheckList>> checkListModel = new LoadableDetachableModel<List<CheckList>>() {
 			private static final long serialVersionUID = 1L;
 			@Override
 			protected List<CheckList> load() {
-				return project.getCheckLists();
+				return projectModel.getObject().getCheckLists();
 			}
 		};
 		final WebMarkupContainer container = new WebMarkupContainer("container");
@@ -76,7 +77,7 @@ public class ListCheckListPanel extends Panel {
 
 		emptyLabel = new Label("emptyLabel", "No checklists has been added to this project yet.");
 		emptyLabel.setOutputMarkupId(true);
-		emptyLabel.setVisible(project.getCheckLists().isEmpty());
+		emptyLabel.setVisible(projectModel.getObject().getCheckLists().isEmpty());
 		container.add(emptyLabel);
 
 		container.add(new WebMarkupContainer("removeHeader"){
@@ -94,7 +95,7 @@ public class ListCheckListPanel extends Panel {
 				final CheckList cl = item.getModelObject();
 				final PageParameters pp = new PageParameters();
 				pp.put("checklist", cl.getId());
-				pp.put(Project.PP_PROJECT_ID, project.getId());
+				pp.put(Project.PP_PROJECT_ID, projectModel.getObject().getId());
 				//Check for answered questions on this checklist
 				boolean isAnswered=false;
 				for(CheckListQuestion question :cl.getQuestions()){
@@ -105,8 +106,8 @@ public class ListCheckListPanel extends Panel {
 				}
 				//Check for links from project schedule events
 				boolean isLinked=false;
-				if(project != null && project.getProjectSchedule() != null){
-					for(final ProjectScheduleEvent event : project.getProjectSchedule().getEvents()){
+				if(projectModel.getObject() != null && projectModel.getObject().getProjectSchedule() != null){
+					for(final ProjectScheduleEvent event : projectModel.getObject().getProjectSchedule().getEvents()){
 						if(event.getCheckList() != null && event.getCheckList().equals(cl)){
 							isLinked = true;
 							break;
@@ -123,7 +124,7 @@ public class ListCheckListPanel extends Panel {
 						assert(canDeleteChecklist(role));
 						//						if(checklistCanBeRemoved){
 
-						for (ProjectScheduleEvent pse : project.getProjectSchedule().getEvents()){
+						for (ProjectScheduleEvent pse : projectModel.getObject().getProjectSchedule().getEvents()){
 							if (pse.getCheckList()!=null && pse.getCheckList().equals(item.getModelObject())){
 								pse.setCheckList(null);
 								pseDao.save(pse);
@@ -131,8 +132,11 @@ public class ListCheckListPanel extends Panel {
 						}
 
 						checkListDao.reLoad(item.getModel().getObject());
-						project.removeCheckList(item.getModelObject());
-						projectDao.save(project);
+						projectModel.getObject().removeCheckList(item.getModelObject());
+						
+						
+						
+						projectModel.setObject(projectDao.save(projectModel.getObject()));
 						setResponsePage(SupervisorChecklistPage.class, pp);
 						//						}
 					}
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListTemplatePanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListTemplatePanel.java
index df0c66a319..f977a1d17f 100644
--- a/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListTemplatePanel.java
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/ListCheckListTemplatePanel.java
@@ -131,7 +131,7 @@ public class ListCheckListTemplatePanel extends Panel{
 							
 							if (!alreadyAdded){
 								project.addCheckList(checkListDao.save(cl));
-								projectDao.save(project);
+								project = projectDao.save(project);
 								dialog.close(target);
 								setResponsePage(SupervisorChecklistPage.class, pp);
 							}
diff --git a/src/main/java/se/su/dsv/scipro/conference/panels/ConferencePanel.java b/src/main/java/se/su/dsv/scipro/conference/panels/ConferencePanel.java
index 0dc0dcff52..3b72b775a5 100644
--- a/src/main/java/se/su/dsv/scipro/conference/panels/ConferencePanel.java
+++ b/src/main/java/se/su/dsv/scipro/conference/panels/ConferencePanel.java
@@ -160,7 +160,7 @@ public class ConferencePanel extends Panel {
 
 						MessageBoard mb = messageBoardModel.getObject();
 						mb.removeFromBoardMessages(boardMessageDao.reLoad(bm));
-						messageBoardDao.save(mb);
+						mb = messageBoardDao.save(mb);
 						boardMessageDao.delete(boardMessageDao.reLoad(bm));
 						webMarkupContainer.removeAll();
 						loadUserDataView(new BoardMessageDataProvider(messageBoardModel));
@@ -319,7 +319,7 @@ public class ConferencePanel extends Panel {
 						
 						MessageBoard mb = messageBoardModel.getObject();
 						mb.addToBoardMessages(bm);
-						messageBoardDao.save(mb);
+						mb = messageBoardDao.save(mb);
 
 						for (SubscriberModel subscriberModel : subscriberModels) {
 							notificationController.notifyConferencePost(subscriberModel.getUser(),
diff --git a/src/main/java/se/su/dsv/scipro/data/controllers/impl/CheckListControllerImpl.java b/src/main/java/se/su/dsv/scipro/data/controllers/impl/CheckListControllerImpl.java
index 77670d8ea5..213949fa8a 100644
--- a/src/main/java/se/su/dsv/scipro/data/controllers/impl/CheckListControllerImpl.java
+++ b/src/main/java/se/su/dsv/scipro/data/controllers/impl/CheckListControllerImpl.java
@@ -90,7 +90,7 @@ public class CheckListControllerImpl implements CheckListController, IClusterabl
 			clUpload.setFileName(upload.getClientFileName());
 			clUpload = checkListUploadDao.save(clUpload);
 			checkList.setCheckListUpload(clUpload);
-			checkListDao.save(checkList);
+			checkList = checkListDao.save(checkList);
 			return true;
 		} catch (Exception e) {
 			//Something went wrong...
@@ -119,7 +119,7 @@ public class CheckListControllerImpl implements CheckListController, IClusterabl
 			CheckList tmp = checkListUpload.getCheckList();
 			tmp.setCheckListUpload(null);
 			checkListUploadDao.delete(checkListUpload);
-			checkListDao.save(tmp);
+			tmp = checkListDao.save(tmp);
 		}
 	}
 
diff --git a/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java b/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
index 56095ab42a..f0402d0d20 100644
--- a/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
+++ b/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
@@ -119,7 +119,7 @@ public class NotificationControllerImpl implements NotificationController {
 		notification.setUser(usertoNotify);
 		notification.setInfoText(notificationMessage.getWebNotificationMessage());
 		notification.setUrl(absoluteUrl);
-		notificationDao.save(notification);
+		notification = notificationDao.save(notification);
 	}
 
 	/*
diff --git a/src/main/java/se/su/dsv/scipro/data/facade/ProjectFacade.java b/src/main/java/se/su/dsv/scipro/data/facade/ProjectFacade.java
index 7d1f9a4039..565c3d82cd 100644
--- a/src/main/java/se/su/dsv/scipro/data/facade/ProjectFacade.java
+++ b/src/main/java/se/su/dsv/scipro/data/facade/ProjectFacade.java
@@ -4,6 +4,7 @@ import java.util.Date;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -11,32 +12,37 @@ import se.su.dsv.scipro.data.dao.interfaces.CheckListDao;
 import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
 import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
 import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
+import se.su.dsv.scipro.data.dao.interfaces.UserSettingsDao;
 import se.su.dsv.scipro.data.dataobjects.CheckList;
 import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
 import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
 import se.su.dsv.scipro.data.dataobjects.ChecklistCategory;
 import se.su.dsv.scipro.data.dataobjects.Project;
 import se.su.dsv.scipro.data.dataobjects.ProjectClass;
+import se.su.dsv.scipro.data.dataobjects.Student;
 import se.su.dsv.scipro.data.enums.ProjectStatus;
 import se.su.dsv.scipro.data.enums.StateOfMind;
 
 @Component
 public class ProjectFacade {
-	
+
 	@Autowired
 	private CheckListTemplateDao checkListTemplateDao;
-	
+
 	@Autowired
 	private CheckListDao checkListDao;
-	
+
 	@Autowired
 	private CheckListQuestionDao checkListQuestionDao;
-	
+
+	@Autowired
+	private UserSettingsDao userSettingsDao;
+
 	@Autowired
 	private ProjectDao projectDao;
 	@Autowired
 	private CheckListTemplateDao checklistTemplateDao;
-	
+
 	public void completedProjectStatus(Project project){
 		if (project!=null){
 			project = projectDao.reLoad(project);
@@ -47,38 +53,49 @@ public class ProjectFacade {
 			}
 		}
 	}
-	
+
+	public void deleteProject(Project project){
+		project = projectDao.reLoad(project);
+		for (Student s : project.getProjectParticipants()){
+			if (userSettingsDao.getUserSettings(s.getUser()).getActiveProject()!=null && userSettingsDao.getUserSettings(s.getUser()).getActiveProject().equals(project)){
+				userSettingsDao.getUserSettings(s.getUser()).setActiveProject(null);
+				userSettingsDao.save(userSettingsDao.getUserSettings(s.getUser()));
+			}
+		}
+		projectDao.delete(project);
+	}
+
 	public void generateChecklists(Project project){
 		List<CheckListTemplate> templates;
 		project = projectDao.reLoad(project);
-		
+
 		if(project.getProjectClass().getCode().equals(ProjectClass.BACHELOR)){
 			templates = checkListTemplateDao.findTemplatesByCategory("Bachelor");
 		}else{
 			templates = checkListTemplateDao.findTemplatesByCategory("Master");
 		}
-		
-		
+
+
 		for(CheckListTemplate template : templates){
-			
+
 			List<CheckList> addedCheckLists = project.getCheckLists(); //list with all the checklist already added to the project
-			
+
 			boolean alreadyAdded = false;
-			
+
 			for (CheckList check : addedCheckLists){ //loop through the list
 				if (check.getName().equals(template.getName())){ //if the name of the template we want to add already exists as a checklist
 					alreadyAdded = true; //set the boolean to true
 				}
 			}
-			
+
 			if (!alreadyAdded){ //if its NOT already added, then add a new checklist based on the template
-				
+
 				CheckListTemplate clt2 = checklistTemplateDao.reLoad(template);
 				List<ChecklistCategory> categoryList = new ArrayList<ChecklistCategory>();
 				for(ChecklistCategory cc : clt2.getCategories()){
 					categoryList.add(cc);
 				}
-				
+
 				CheckList cl = new CheckList(template.getName(), project, categoryList);
 				for(String question : template.getQuestions()){
 					CheckListQuestion clQuestion = new CheckListQuestion(question, cl.getNumberOfQuestions());
@@ -87,11 +104,11 @@ public class ProjectFacade {
 				}
 				cl.setCategories(template.getCategories());
 				project.addCheckList(checkListDao.save(cl));
-				
+
 			}
 		}
-		
-		projectDao.save(project);
+
+		project = projectDao.save(project);
 	}
 
 }
diff --git a/src/main/java/se/su/dsv/scipro/json/pages/JsonDeletePrivateMessagePage.java b/src/main/java/se/su/dsv/scipro/json/pages/JsonDeletePrivateMessagePage.java
index e085e41a4c..220e2a2cb6 100644
--- a/src/main/java/se/su/dsv/scipro/json/pages/JsonDeletePrivateMessagePage.java
+++ b/src/main/java/se/su/dsv/scipro/json/pages/JsonDeletePrivateMessagePage.java
@@ -64,7 +64,7 @@ public class JsonDeletePrivateMessagePage extends WebPage {
 		if (userSettings.getApiKey() != null && userSettings.getApiKey().equals(apikey)) {
 			PrivateMessage privateMessage = privateMessageDao.load(jsonDeletePrivateMessage.id);
 			privateMessage.setDeleted(true);
-			privateMessageDao.save(privateMessage);
+			privateMessage = privateMessageDao.save(privateMessage);
 			jsonOutput.addProperty("apikey", "success");
 		} else {
 			jsonOutput.addProperty("apikey", "fail");
diff --git a/src/main/java/se/su/dsv/scipro/json/pages/JsonDeleteRecipientPage.java b/src/main/java/se/su/dsv/scipro/json/pages/JsonDeleteRecipientPage.java
index 1c38b3b6fc..a496eff956 100644
--- a/src/main/java/se/su/dsv/scipro/json/pages/JsonDeleteRecipientPage.java
+++ b/src/main/java/se/su/dsv/scipro/json/pages/JsonDeleteRecipientPage.java
@@ -60,7 +60,7 @@ public class JsonDeleteRecipientPage extends WebPage {
 		if (userSettings.getApiKey() != null && userSettings.getApiKey().equals(apikey)) {
 			Recipient recipient = recipientDao.load(jsonRecipient.id);
 			recipient.setDeleted(true);
-			recipientDao.save(recipient);
+			recipient = recipientDao.save(recipient);
 			jsonOutput.addProperty("apikey", "success");
 		} else {
 			jsonOutput.addProperty("apikey", "fail");
diff --git a/src/main/java/se/su/dsv/scipro/json/pages/JsonSetReadPage.java b/src/main/java/se/su/dsv/scipro/json/pages/JsonSetReadPage.java
index c9784d0c82..98648b4c56 100644
--- a/src/main/java/se/su/dsv/scipro/json/pages/JsonSetReadPage.java
+++ b/src/main/java/se/su/dsv/scipro/json/pages/JsonSetReadPage.java
@@ -61,7 +61,7 @@ public class JsonSetReadPage extends WebPage {
 		if (userSettings.getApiKey() != null && userSettings.getApiKey().equals(apikey)) {
 			Recipient recipient = recipientDao.load(jsonRecipient.id);
 			recipient.setDateRead(new Date());
-			recipientDao.save(recipient);
+			recipient = recipientDao.save(recipient);
 			jsonOutput.addProperty("apikey", "success");
 		} else {
 			jsonOutput.addProperty("apikey", "fail");
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/model/CategoryModel.java b/src/main/java/se/su/dsv/scipro/knol/resource/model/CategoryModel.java
deleted file mode 100644
index 687dd266ef..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/model/CategoryModel.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.model;
-
-import java.util.Collection;
-
-import org.apache.wicket.IClusterable;
-
-import se.su.dsv.scipro.data.dataobjects.Category;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- *
- */
-public class CategoryModel implements IClusterable {
-	
-	private String categoryName;
-	private Category selectedCategory;
-
-	public String getCategoryName() {
-		return categoryName;
-	}
-
-	public void setCategoryName(String categoryName) {
-		this.categoryName = categoryName;
-	}
-
-	public Category getCategory() {
-		return selectedCategory;
-	}
-
-	public void setCategory(Category category) {
-		this.selectedCategory = category;
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/model/ResourceModel.java b/src/main/java/se/su/dsv/scipro/knol/resource/model/ResourceModel.java
deleted file mode 100644
index fdd093940e..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/model/ResourceModel.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.model;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.wicket.IClusterable;
-
-import se.su.dsv.scipro.data.dataobjects.Category;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.data.dataobjects.User;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- *
- */
-public class ResourceModel implements IClusterable {
-	
-	private String info;
-	private String link;
-	private String linkName;
-	private String embedCode;
-	private String tags;
-	private Collection<Category> selectedCategoryCollection;
-
-
-	
-	public String getEmbedCode() {
-		return embedCode;
-	}
-	public void setEmbedCode(String embedCode) {
-		this.embedCode = embedCode;
-	}
-	public String getInfo() {
-		return info;
-	}
-	public String getLink() {
-		return link;
-	}
-	public String getLinkName() {
-		return linkName;
-	}
-
-
-	public String getTags() {
-		return tags;
-	}
-	public void setTags(String tags) {
-		this.tags = tags;
-	}
-	public void setInfo(String info) {
-		this.info = info;
-	}
-	public void setLink(String link) {
-		this.link = link;
-	}
-	public void setLinkName(String linkName) {
-		this.linkName = linkName;
-	}
-	public Collection<Category> getSelectedCategoryCollection() {
-		return selectedCategoryCollection;
-	}
-	public void setSelectedCategoryCollection(
-			Collection<Category> selectedCategoryCollection) {
-		this.selectedCategoryCollection = selectedCategoryCollection;
-	}
-
-
-	
-	
-	
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.html b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.html
deleted file mode 100644
index 36f9b93a63..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-	<wicket:extend>
-	
-			
-	       	<div wicket:id="bookMarkTagPanel"></div>
-
-	
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.java
deleted file mode 100644
index 563d11d3db..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableCategoryResourcePage.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-
-import se.su.dsv.scipro.basepages.MenuPage;
-import se.su.dsv.scipro.data.dataobjects.Category;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.knol.resource.panels.ResourceBookmarkableCategoryPanel;
-import se.su.dsv.scipro.knol.resource.panels.ResourceBookmarkableTagPanel;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class BookmarkableCategoryResourcePage extends MenuPage {
-
-	public BookmarkableCategoryResourcePage(PageParameters pp) {
-		super(pp);
-		add(new ResourceBookmarkableCategoryPanel("bookMarkTagPanel", pp));
-	}
-
-	public static BookmarkablePageLink<Void> getBookmarkablePageLink(String id,
-			List<Category> categoryList) {
-		String category = "";
-		boolean first = true;
-		for (Category t : categoryList) {
-			if (first) {
-				category += t.getId();
-				first = false;
-			} else{
-				category += "+" + t.getId();
-			}
-		}
-		
-		PageParameters pp = new PageParameters();
-		pp.add("c", category);
-		return new BookmarkablePageLink<Void>(id,
-				BookmarkableCategoryResourcePage.class, pp);
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.html b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.html
deleted file mode 100644
index 0c290bef65..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-	<wicket:extend>
-	
-			
-	       	<div wicket:id="bookMarkPanel"></div>
-
-	
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.java
deleted file mode 100644
index 06704f6572..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableResourcePage.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-
-import se.su.dsv.scipro.basepages.MenuPage;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.knol.resource.panels.ResourceBookmarkablePanel;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- *
- */
-public class BookmarkableResourcePage extends MenuPage{
-	
-	public BookmarkableResourcePage(PageParameters pp) {
-		super(pp);
-		add(new ResourceBookmarkablePanel("bookMarkPanel", pp));
-	}	
-	
-	public static BookmarkablePageLink<Void> getBookmarkablePageLink(String id, Resource resource){
-		PageParameters pp = new PageParameters();
-		pp.put("r", resource.getId());
-		return new BookmarkablePageLink<Void>(id, BookmarkableResourcePage.class, pp);	
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.html b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.html
deleted file mode 100644
index 36f9b93a63..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-	<wicket:extend>
-	
-			
-	       	<div wicket:id="bookMarkTagPanel"></div>
-
-	
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.java
deleted file mode 100644
index f34cf40cd2..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/BookmarkableTagResourcePage.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-
-import se.su.dsv.scipro.basepages.MenuPage;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.knol.resource.panels.ResourceBookmarkableTagPanel;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class BookmarkableTagResourcePage extends MenuPage {
-
-	public BookmarkableTagResourcePage(PageParameters pp) {
-		super(pp);
-		add(new ResourceBookmarkableTagPanel("bookMarkTagPanel", pp));
-	}
-
-	public static BookmarkablePageLink<Void> getBookmarkablePageLink(String id,
-			List<Tag> tagList) {
-		String tag = "";
-		boolean first = true;
-		for (Tag t : tagList) {
-			if (first) {
-				tag += t.getId();
-				first = false;
-			} else{
-				tag += "+" + t.getId();
-			}
-		}
-		PageParameters pp = new PageParameters();
-		pp.add("t", tag);
-		return new BookmarkablePageLink<Void>(id,
-				BookmarkableTagResourcePage.class, pp);
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/HtmlWebMarkupContainer.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/HtmlWebMarkupContainer.java
deleted file mode 100644
index 45c5aeb277..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/HtmlWebMarkupContainer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.MarkupStream;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class HtmlWebMarkupContainer extends WebMarkupContainer {
-
-	private String html;
-
-	public HtmlWebMarkupContainer(String id, String html) {
-		super(id);
-		this.html = html;
-	}
-	
-	
-
-	public String getHtml() {
-		return html;
-	}
-
-
-
-	public void setHtml(String html) {
-		this.html = html;
-	}
-
-
-
-	@Override
-	protected void onComponentTagBody(MarkupStream markupStream,
-			ComponentTag openTag) {
-		replaceComponentTagBody(markupStream, openTag, html);
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.html b/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.html
deleted file mode 100644
index b5d9cd2508..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-	<wicket:extend>
-		<div wicket:id="resourcesPanel"></div>
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.java
deleted file mode 100644
index db79c985c6..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/ResourcePage.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import org.apache.wicket.PageParameters;
-
-import se.su.dsv.scipro.basepages.MenuPage;
-import se.su.dsv.scipro.knol.resource.panels.ResourcesPanel;
-import se.su.dsv.scipro.security.auth.Authorization;
-import se.su.dsv.scipro.security.auth.roles.Roles;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-@Authorization(authorizedRoles={Roles.SYSADMIN}) //TODO Hidden for initial deployment
-public class ResourcePage extends MenuPage {
-
-    public static final String MAIN_MENU_LABEL = "Resources";
-
-	public ResourcePage(PageParameters pp) {
-		super(pp);
-		add(new ResourcesPanel("resourcesPanel"));
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/page/StaticImage.java b/src/main/java/se/su/dsv/scipro/knol/resource/page/StaticImage.java
deleted file mode 100644
index c7d80e0b71..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/page/StaticImage.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.page;
-
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.WebComponent;
-import org.apache.wicket.model.IModel;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- *
- */
-public class StaticImage extends WebComponent {
-
-    public StaticImage(String id, IModel model) {
-        super(id, model);
-    }
-
-    protected void onComponentTag(ComponentTag tag) {
-        super.onComponentTag(tag);
-        checkComponentTag(tag, "img");
-        tag.put("src", getDefaultModelObjectAsString());
-        // since Wicket 1.4 you need to use getDefaultModelObjectAsString() instead of getModelObjectAsString()
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.html
deleted file mode 100644
index 002c2ac0e1..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-	
-	<div><span wicket:id="feedbackPanel">[Feedback goes here]</span></div>
-	<form wicket:id="uploadForm">
-		<div><input wicket:id="fileInput" id="fileInput" type="file" /></div>
-		<div><input type="submit" value="Upload!" name="upload" /></div>
-	<span wicket:id="progress">[[ajax upload progressbar]]</span>
-	</form>
-	<table wicket:id="listFiles">
-			<tr wicket:id="content">
-<!--				<td><a href="delete" wicket:id="delete"><span-->
-<!--					wicket:id="deleteIcon" /></a></td>-->
-				<td><span wicket:id="name">name</span></td>
-				<td><a href="#" wicket:id="open">Open</a></td>
-
-				<td><a href="#" wicket:id="download">Download</a></td>
-
-			</tr>		
-	</table>
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.java
deleted file mode 100644
index 13a41b760f..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/FileResourcePanel.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.List;
-
-import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
-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.upload.FileUpload;
-import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.util.lang.Bytes;
-
-import se.su.dsv.scipro.data.dao.interfaces.UserDao;
-import se.su.dsv.scipro.data.dataobjects.FileDescription;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.repository.FileRepository;
-import se.su.dsv.scipro.repository.SortOrder;
-import se.su.dsv.scipro.repository.components.FileDownloadLink;
-import se.su.dsv.scipro.repository.components.FileOpenLink;
-
-public class FileResourcePanel extends Panel{
-
-	private static final long serialVersionUID = 5500371345065598841L;
-
-	protected Bytes maxFileSize = Bytes.megabytes(100);
-
-	@SpringBean
-	protected FileRepository fileRepository;
-	@SpringBean
-	protected UserDao userDao;
-
-	protected FileUploadForm fuf;
-
-	protected Resource resource;
-	
-	protected WebMarkupContainer listFiles;
-	protected WebMarkupContainer tableHead;
-	
-	public FileResourcePanel(String id, Resource resource) {
-		super(id);
-		add(new FeedbackPanel("feedbackPanel"));
-		this.resource = resource;
-		
-		listFiles = new WebMarkupContainer("listFiles");
-		add(listFiles);
-		reloadFiles();
-
-		fuf = new FileUploadForm("uploadForm");
-		add(fuf);
-		fuf.add(new UploadProgressBar("progress", fuf)); //TODO seems to be broken in some browsers like Chrome
-		if(resource == null || resource.getId() == null)
-			fuf.setVisible(false);
-
-	}
-	
-	private void reloadFiles() {
-		listFiles.removeAll();
-		List<FileDescription> items = fileRepository.searchFiles(fileRepository.getResourcePath(resource.getId()),false);
-		
-		if(items.isEmpty())
-			listFiles.setVisible(false);
-		else
-			listFiles.setVisible(true);
-		
-		fileRepository.sortFileDescriptions(items, SortOrder.Name);
-		
-		RepeatingView contents = new RepeatingView("content");
-		listFiles.add(contents);
-		for (final FileDescription desc : items) {
-			WebMarkupContainer inner = new WebMarkupContainer(contents.newChildId());
-
-			inner.add(new Label("name", desc.getName()));
-
-			inner.add(new FileDownloadLink("download", desc ));
-			inner.add(new FileOpenLink("open", desc));
-				
-			contents.add(inner);
-		}//for
-	}//reloadFiles
-	
-	
-
-	private class FileUploadForm extends Form<Void> {
-		private static final long serialVersionUID = 1L;
-		private FileUploadField fileUploadField;
-
-		public FileUploadForm(String id) {
-			super(id);
-			setMultiPart(true);
-
-			// Add one file input field
-			add(fileUploadField = new FileUploadField("fileInput"));
-
-			setMaxSize(maxFileSize);
-		}		
-
-		@Override
-		protected void onSubmit() {
-			final FileUpload upload = fileUploadField.getFileUpload();
-			if(resource == null){
-				error("File resource was null, this was not meant to happen!");
-			} else {
-				if(resource.getId() == null){				
-					error("File resource id was null, this was not meant to happen!");
-				}
-				else {
-					String absolutePath = fileRepository.getResourcePath(resource.getId());			
-					fileRepository.storeFile(upload, absolutePath);
-				}
-			}
-			setRedirect(true);
-
-			reloadFiles();
-
-			//This might have to be changed into something better using page parameters etc.
-			setResponsePage(getPage());
-		}
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.html
deleted file mode 100644
index 57402d02cc..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-		
-			<h2>Resources</h2>
-			<div wicket:id="tagHeader" class="larger"></div>
-			<a href="#" wicket:id="showAll">Show All</a>
-			<div wicket:id="resourceListPanel"></div>
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.java
deleted file mode 100644
index 9b01b7c9fc..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableCategoryPanel.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.SciProApplication;
-import se.su.dsv.scipro.data.dao.interfaces.CategoryDao;
-import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
-import se.su.dsv.scipro.data.dao.interfaces.TagDao;
-import se.su.dsv.scipro.data.dataobjects.Category;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.data.enums.ResourceType;
-import se.su.dsv.scipro.knol.resource.page.ResourcePage;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class ResourceBookmarkableCategoryPanel extends Panel {
-
-	private static final long serialVersionUID = 1L;
-
-	@SpringBean
-	private ResourceDao resourceDao;
-
-	@SpringBean
-	private CategoryDao categoryDao;
-
-
-	public ResourceBookmarkableCategoryPanel(String id, PageParameters pp) {
-		super(id);
-		add(new AjaxLink<Tag>("showAll") {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-
-				setResponsePage(ResourcePage.class);
-			}
-		});
-		List<Category> categoryList = new ArrayList<Category>();
-		String categories = pp.getString("c");
-		String tagHeader = "Filtered by categories: ";
-		boolean first = true;
-		if (categories == null) {
-			failAndRedirect();
-		} else {
-			StringTokenizer stringTokenizer = new StringTokenizer(categories,
-					"+");
-
-			while (stringTokenizer.hasMoreTokens()) {
-				String tagString = stringTokenizer.nextToken().trim();
-				Category category = categoryDao.load(Long.valueOf(tagString));
-				if (category != null) {
-					if (!categoryList.contains(category)) {
-						categoryList.add(category);
-						if (first) {
-							tagHeader += category.getCategoryName();
-							first = false;
-						} else
-							tagHeader += ", " + category.getCategoryName();
-					}
-				} else {
-					failAndRedirect();
-				}
-
-			}
-
-		}
-		add(new Label("tagHeader", tagHeader));
-		Set<Resource> resourceList = new HashSet<Resource>();
-		for (Category category : categoryList) {
-			resourceList.addAll(resourceDao.findResourcesByCategory(category));
-		}
-		add(new ResourceListPanel("resourceListPanel", new ArrayList<Resource>(
-				resourceList), ResourceType.TAGVIEW));
-
-	}
-
-	private void failAndRedirect() {
-		throw new RestartResponseException(SciProApplication.get()
-				.getApplicationSettings().getAccessDeniedPage());
-	}
-
-}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.html
deleted file mode 100644
index 5eac0feb1f..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-		
-			<h2>Resource</h2>
-			<div wicket:id="resourceListPanel"></div>
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.java
deleted file mode 100644
index e3717f09b9..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkablePanel.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.SciProApplication;
-import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.data.enums.ResourceType;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class ResourceBookmarkablePanel extends Panel {
-
-	private static final long serialVersionUID = 1L;
-
-
-	@SpringBean
-	private ResourceDao resourceDao;
-
-
-	private Resource resource;
-
-
-	public ResourceBookmarkablePanel(String id, PageParameters pp) {
-		super(id);
-		Long resId = pp.getAsLong("r");
-		
-		if (resId == null) {
-			failAndRedirect();
-		} else {
-
-			resource = resourceDao.load(resId);
-			if (resource == null)
-				failAndRedirect();
-		}
-		List<Resource> resourceList = new ArrayList<Resource>();
-		resourceList.add(resource);
-		add(new ResourceListPanel("resourceListPanel", resourceList, ResourceType.PERMALINK));
-
-	}
-
-	private void failAndRedirect() {
-		throw new RestartResponseException(SciProApplication.get()
-				.getApplicationSettings().getAccessDeniedPage());
-	}
-
-	
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.html
deleted file mode 100644
index 57402d02cc..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-		
-			<h2>Resources</h2>
-			<div wicket:id="tagHeader" class="larger"></div>
-			<a href="#" wicket:id="showAll">Show All</a>
-			<div wicket:id="resourceListPanel"></div>
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.java
deleted file mode 100644
index 8e22e4f518..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceBookmarkableTagPanel.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.SciProApplication;
-import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
-import se.su.dsv.scipro.data.dao.interfaces.TagDao;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.data.enums.ResourceType;
-import se.su.dsv.scipro.knol.resource.page.ResourcePage;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class ResourceBookmarkableTagPanel extends Panel {
-
-	private static final long serialVersionUID = 1L;
-
-	@SpringBean
-	private ResourceDao resourceDao;
-
-	@SpringBean
-	private TagDao tagDao;
-
-
-	public ResourceBookmarkableTagPanel(String id, PageParameters pp) {
-		super(id);
-		add(new AjaxLink<Tag>("showAll") {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-
-				setResponsePage(ResourcePage.class);
-			}
-		});
-		List<Tag> tagList = new ArrayList<Tag>();
-		String tags = pp.getString("t");
-		String tagHeader = "Filtered by tags: ";
-		boolean first = true;
-		if (tags == null) {
-			failAndRedirect();
-		} else {
-			StringTokenizer stringTokenizer = new StringTokenizer(tags, "+");
-
-			while (stringTokenizer.hasMoreTokens()) {
-				String tagString = stringTokenizer.nextToken().trim();
-				Tag tag = tagDao.load(Long.valueOf(tagString));
-				if (null != tag) {
-					if (!tagList.contains(tag)) {
-						tagList.add(tag);
-						if (first) {
-							tagHeader += tag.getTag();
-							first = false;
-						} else
-							tagHeader += ", " + tag.getTag();
-					}
-				} else {
-					failAndRedirect();
-				}
-
-			}
-
-		}
-		add(new Label("tagHeader", tagHeader));
-		Set<Resource> resourceList = new HashSet<Resource>();
-		for (Tag tag : tagList) {
-			resourceList.addAll(resourceDao.findResourcesByTag(tag));
-		}
-		add(new ResourceListPanel("resourceListPanel", new ArrayList<Resource>(resourceList), ResourceType.TAGVIEW));
-
-	}
-
-	private void failAndRedirect() {
-		throw new RestartResponseException(SciProApplication.get()
-				.getApplicationSettings().getAccessDeniedPage());
-	}
-
-}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.html
deleted file mode 100644
index 363edf028d..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-			
-			<div wicket:id="listContainer">
-			<table wicket:id = "link-item" class = "link-resource-border">
-			
-				<tr>
-				<td class="rating-cell">
-					<div class = "centered" ><a href="#" wicket:id="upLink"><img wicket:id="upLinkIcon"/></a></div>
-					<div class = "centered larger-rate-number"  wicket:id="rate"></div>
-					<div class = "centered" ><a href="#" wicket:id="downLink"><img wicket:id="downLinkIcon" /></a></div>
-				</td>
-				<td>	
-					
-					<a href="#" target="new" wicket:id="link" class="larger"></a>
-					<span wicket:id="heading" class="larger"></span>
-					<div class = "right-corner-resource">
-						<div class = "resource-icon">				
-							<a href="#" wicket:id="editResource"><img src="images/icons/edit_16x16.png" " alt="Edit" title="Edit"/></a>
-							<a href="#" wicket:id="deleteResource"><img src="images/icons/delete_16x16.png" alt="Delete" title="Delete"/></a>
-						</div>	
-						<div class = "smaller">
-							<strong>Created: </strong> <span wicket:id="date"></span>
-							<br/>
-							<strong>Created by: </strong> <span wicket:id="user"></span>
-						</div>
-					
-				   </div>
-					<div><a href="#" target="new" wicket:id="linkAddress"></a></div>
-					<div wicket:id="embedCode"></div>
-
-					
-
-					<div wicket:id="info" class = "info-resource"></div>	
-					<div><strong>Categories: </strong> <span wicket:id="category-item"><a href="#" wicket:id="tag"><span wicket:id="tagName"></span></a> </span></div>
-					<strong>Tags: </strong> <span wicket:id="tag-item"><a href="#" wicket:id="tag"><span wicket:id="tagName"></span></a> </span>						
-					<div ><a href="#" wicket:id="bookmark">Permalink</a></div>
-					
-					
-						<div><a href="#" wicket:id="showComments"><span wicket:id="commentNumber"></span></a></div>
-					
-				</td>	
-
-
-				</tr>
-				<tr>
-					<td class="rating-cell"></td>
-				 	<td colspan ="2"><div wicket:id="container"><div wicket:id="commentThread"></div></div></td>
-				</tr>		
-			</table>	
-			<div wicket:id ="navigator"></div>
-			</div>
-
-		<div wicket:id="editLinkDialog">
-				<div wicket:id="editLinkDialogContainer">
-	       		<form wicket:id="editLinkResourceForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel">
-	       				</div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Link Name:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="linkName" class ="span-6"/>
-					</div>
-					<div class ="span-6 last">
-						<strong>Link Address:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="link" class ="span-6" />
-					</div>
-					<div class ="span-6 last">
-						<strong>Info:</strong>
-					</div>
-					<div class ="span-6 last">
-						<textarea  wicket:id="info" ></textarea>	
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-6 last">
-						<select wicket:id="selectedCategoryCollection"  class ="span-8 last"></select>
-          			</div>
-					<div class ="span-6 last">
-						<strong>Tags:</strong>
-					</div>
-
-
-					<div class ="span-6 last">
-						Separate by comma.
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="tags" class ="span-6" />
-					</div>
-					<div class ="span-6 last">
-						<strong>Delete tags:</strong>
-					</div>
-					<div wicket:id="tagListContainer" class ="span-6 last">
-						<span wicket:id="tag-item">
-							<span wicket:id="tagContainer">
-							<span wicket:id="tag"></span>
-							<a href="#" wicket:id="deleteTag"><img src="images/icons/delete_16x16.png" alt="Delete" title="Delete"/></a>
-							</span>
-						</span>
-					
-					</div>
-							<div class ="span-6 last edit-button"><input type="submit" wicket:id="submitButton"  /> </div>
-				</form>
-			</div>
-		</div>
-		
-		<div wicket:id="editEmbedDialog">
-				<div wicket:id="editEmbedDialogContainer">
-	       		<form wicket:id="editEmbedResourceForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel">
-	       				</div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Heading:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="linkName" class ="span-6"/>
-					</div>
-					<div class ="span-6 last">
-						<strong>Embed Code:</strong>
-					</div>
-					<div class ="span-8 last">
-						Disclaimer: no security checks at the moment.
-					</div>
-					<div class ="span-6 last">
-						<textarea  wicket:id="embedCode" ></textarea>
-					</div>
-					<div class ="span-6 last">
-						<strong>Info:</strong>
-					</div>
-					<div class ="span-6 last">
-						<textarea wicket:id="info" ></textarea>	
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-6 last">
-						<select wicket:id="selectedCategoryCollection" class ="span-8 last"></select>
-          			</div>
-					<div class ="span-6 last">
-						<strong>Add tags:</strong>
-					</div>
-					<div class ="span-6 last">
-						Separate by comma.
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="tags" class ="span-6" />
-					</div>
-					<div class ="span-6 last">
-						<strong>Delete tags:</strong>
-					</div>
-					<div wicket:id="tagListContainerEmbed" class ="span-8 last">
-						<span wicket:id="tag-embed-item">
-							<span wicket:id="tagEmbedContainer">
-							<span wicket:id="tagEmbed"></span>
-							<a href="#" wicket:id="deleteTagEmbed"><img src="images/icons/delete_16x16.png" alt="Delete" title="Delete"/></a>
-							</span>
-						</span>
-					
-					</div>
-							<div class ="span-6 last edit-button"><input type="submit" wicket:id="submitButton"  /> </div>
-				</form>
-			</div>
-		</div>
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.java
deleted file mode 100644
index 454054c8a1..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.java
+++ /dev/null
@@ -1,1134 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.wicket.IClusterable;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.IAjaxCallDecorator;
-import org.apache.wicket.ajax.calldecorator.AjaxCallDecorator;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.behavior.AttributeAppender;
-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.IChoiceRenderer;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.link.ExternalLink;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.list.PageableListView;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.validation.validator.UrlValidator;
-import org.odlabs.wiquery.ui.dialog.Dialog;
-
-import se.su.dsv.scipro.SciProSession;
-import se.su.dsv.scipro.commentthread.panels.CommentThreadPanel;
-import se.su.dsv.scipro.components.FormFeedbackPanel;
-import se.su.dsv.scipro.data.dao.interfaces.CategoryDao;
-import se.su.dsv.scipro.data.dao.interfaces.CommentThreadDao;
-import se.su.dsv.scipro.data.dao.interfaces.RatableDao;
-import se.su.dsv.scipro.data.dao.interfaces.RatingDao;
-import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
-import se.su.dsv.scipro.data.dao.interfaces.TagDao;
-import se.su.dsv.scipro.data.dao.interfaces.UserDao;
-import se.su.dsv.scipro.data.dataobjects.Category;
-import se.su.dsv.scipro.data.dataobjects.CommentThread;
-import se.su.dsv.scipro.data.dataobjects.Rating;
-import se.su.dsv.scipro.data.dataobjects.Recipient;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.data.enums.RatingValue;
-import se.su.dsv.scipro.data.enums.ResourceType;
-import se.su.dsv.scipro.knol.resource.model.ResourceModel;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableCategoryResourcePage;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableResourcePage;
-import se.su.dsv.scipro.knol.resource.page.BookmarkableTagResourcePage;
-import se.su.dsv.scipro.knol.resource.page.HtmlWebMarkupContainer;
-import se.su.dsv.scipro.knol.resource.page.ResourcePage;
-import se.su.dsv.scipro.knol.resource.page.StaticImage;
-import se.su.dsv.scipro.message.panels.CustomPagingNavigator;
-import se.su.dsv.scipro.security.auth.MetaDataActionStrategy;
-import se.su.dsv.scipro.security.auth.roles.Roles;
-import se.su.dsv.scipro.util.DateFormatter;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class ResourceListPanel extends Panel {
-
-	private static final long serialVersionUID = 1L;
-
-	@SpringBean
-	private RatingDao ratingDao;
-
-	@SpringBean
-	private UserDao userDao;
-
-	@SpringBean
-	private TagDao tagDao;
-
-	@SpringBean
-	private ResourceDao resourceDao;
-
-	@SpringBean
-	private CommentThreadDao commentThreadDao;
-	
-	@SpringBean
-	private CategoryDao categoryDao;
-
-	@SpringBean
-	private RatableDao ratableDao;
-
-	private WebMarkupContainer listContainer;
-
-	private PageableListView<Resource> linkListView;
-
-	private WebMarkupContainer linkDialogContainer, embedDialogContainer,
-			editLinkDialogContainer, editEmbedDialogContainer;
-	private Dialog linkDialog, embedDialog, editLinkDialog, editEmbedDialog;
-
-	private int point;
-	private CustomPagingNavigator pagingNavigator;
-	private Resource editResource;
-	private TextField<String> linkAddress;
-	private TextField<String> linkName;
-	private TextField<String> linkNameEmbed;
-	private TextArea<String> info;
-	private TextArea<String> infoEmbed;
-	private EditLinkResourceForm editLinkResourceForm;
-	private EditEmbedResourceForm editEmbedResourceForm;
-	private TextArea<String> embedTextArea;
-	private List<Resource> resourcesList;
-	private ResourceType resourceType;
-	private ListMultipleChoice<Category> linkEditCategorySelectList, embedEditCategorySelectList;
-
-	public ResourceListPanel(String id, List<Resource> resourceList,
-			ResourceType resourceType) {
-		super(id);
-		this.resourceType = resourceType;
-		this.resourcesList = resourceList;
-		listContainer = new WebMarkupContainer("listContainer");
-		loadListView(resourceList);
-		listContainer.add(linkListView);
-		listContainer.setOutputMarkupId(true);
-		listContainer.add(pagingNavigator = new CustomPagingNavigator(
-				"navigator", linkListView) {
-
-					private static final long serialVersionUID = 1L;
-
-			@Override
-			public boolean isVisible() {
-				return linkListView.size() > 0;
-			}
-		});
-
-		add(listContainer);
-		editLinkDialogContainer = new WebMarkupContainer(
-				"editLinkDialogContainer");
-		editLinkDialog = new Dialog("editLinkDialog");
-		editLinkDialog.setModal(true);
-		editLinkDialog.setAutoOpen(false);
-		editLinkDialog.setWidth(470);
-		editLinkDialog.add(editLinkDialogContainer);
-		editLinkDialogContainer.setOutputMarkupId(true);
-		editLinkDialogContainer
-				.add(editLinkResourceForm = new EditLinkResourceForm(
-						"editLinkResourceForm"));
-		add(editLinkDialog);
-
-		editEmbedDialogContainer = new WebMarkupContainer(
-				"editEmbedDialogContainer");
-		editEmbedDialog = new Dialog("editEmbedDialog");
-		editEmbedDialog.setModal(true);
-		editEmbedDialog.setAutoOpen(false);
-		editEmbedDialog.setWidth(470);
-		editEmbedDialog.add(editEmbedDialogContainer);
-		editEmbedDialogContainer.setOutputMarkupId(true);
-		editEmbedDialogContainer
-				.add(editEmbedResourceForm = new EditEmbedResourceForm(
-						"editEmbedResourceForm"));
-		add(editEmbedDialog);
-
-	}
-
-	public void loadListView(List<Resource> resourceList) {
-		if (resourceList == null) {
-			resourceList = resourceDao.findAll();
-		}
-		listContainer.removeAll();
-		Collections.sort(resourceList, new Comparator<Resource>() {
-			@Override
-			public int compare(Resource o1, Resource o2) {
-				return Integer.valueOf(ratableDao.getRating(o2)).compareTo(
-						Integer.valueOf(ratableDao.getRating(o1)));
-			}
-		});
-		linkListView = new PageableListView<Resource>("link-item",
-				resourceList, 20) {
-
-
-					private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void populateItem(final ListItem<Resource> item) {
-				final Resource resource = resourceDao.reLoad(item
-						.getModelObject());
-
-				item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("date", resource.getDateCreated()));
-				item.add(new Label("user", resource.getCreator().getFirstName()
-						+ " " + resource.getCreator().getLastName()));
-				new AddRateButton(item);
-				if (resource.getHeading() == null) {
-					item.add(new ExternalLink("link", resource.getLink(),
-							resource.getLink()) {
-						/**
-								 * 
-								 */
-								private static final long serialVersionUID = 1L;
-
-						@Override
-						public boolean isVisible() {
-							return resource.getEmbedCode() == null;
-						}
-					});
-				} else {
-					item.add(new ExternalLink("link", resource.getLink(),
-							resource.getHeading()) {
-						/**
-								 * 
-								 */
-								private static final long serialVersionUID = 1L;
-
-						@Override
-						public boolean isVisible() {
-							return resource.getEmbedCode() == null;
-						}
-					});
-				}
-				item.add(new Label("heading", resource.getHeading()) {
-					/**
-					 * 
-					 */
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public boolean isVisible() {
-						return resource.getEmbedCode() != null;
-					}
-				});
-				item.add(new ExternalLink("linkAddress", resource.getLink(),
-						resource.getLink()) {
-					/**
-							 * 
-							 */
-							private static final long serialVersionUID = 1L;
-
-					@Override
-					public boolean isVisible() {
-						return resource.getEmbedCode() == null;
-					}
-				});
-
-				item.add(new Label("info", resource.getInfo()));
-				String tags = "";
-
-				int count = 0;
-				for (Tag tag : resource.getTagList()) {
-					if (count == 0) {
-						tags = tag.getTag();
-						count++;
-					} else {
-						tags += ", " + tag.getTag();
-					}
-				}
-
-				final int commentSize;
-				/*
-				 * TODO Needs rewrite, 
-				 */
-				CommentThread commentThread = commentThreadDao.getCommentThread(resource);
-				if(commentThread == null)
-					commentSize = 0;
-				else
-					commentSize = commentThread.getComments().size(); //TODO Implement with query instead
-				/*
-				if (commentThreadDao.getCommentThreadByClassAndId(resource
-						.getClass().getCanonicalName(), resource.getId()) == null) {
-					commentSize = 0;
-				} else {
-					commentSize = commentThreadDao
-							.getCommentThreadByClassAndId(
-									resource.getClass().getCanonicalName(),
-									resource.getId()).getComments().size();
-				}
-				*/
-
-				item.add(new ListView<Category>("category-item", resource.getCategoryList()) {
-
-					/**
-					 * 
-					 */
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					protected void populateItem(final ListItem<Category> item) {
-						final Category category = item.getModelObject();
-						List<Category> categoryList = new ArrayList<Category>();
-						categoryList.add(category);
-						item.add(BookmarkableCategoryResourcePage
-								.getBookmarkablePageLink("tag", categoryList).add(
-										new Label("tagName", category.getCategoryName())));
-
-					}
-
-				});
-				item.add(new ListView<Tag>("tag-item", resource.getTagList()) {
-
-					/**
-					 * 
-					 */
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					protected void populateItem(final ListItem<Tag> item) {
-						final Tag tag = item.getModelObject();
-						List<Tag> tagList = new ArrayList<Tag>();
-						tagList.add(tag);
-						item.add(BookmarkableTagResourcePage
-								.getBookmarkablePageLink("tag", tagList).add(
-										new Label("tagName", tag.getTag())));
-
-					}
-
-				});
-
-				item.add(BookmarkableResourcePage.getBookmarkablePageLink(
-						"bookmark", resource));
-				String comments = " Comments";
-				if (commentSize == 1) {
-					comments = " Comment";
-				}
-				final Label comment = new Label("commentNumber", commentSize
-						+ comments);
-
-				comment.setOutputMarkupId(true);
-				final WebMarkupContainer webMarkupContainer = new WebMarkupContainer("container");
-				webMarkupContainer.setOutputMarkupPlaceholderTag(true);	
-				item.add(webMarkupContainer);
-				
-				CommentThreadPanel ctp = new CommentThreadPanel("commentThread", resource, 5);
-				ctp.setOutputMarkupPlaceholderTag(true);
-				webMarkupContainer.add(ctp);
-				
-				webMarkupContainer.setVisible(false);
-				
-				item.add(new AjaxLink<String>("showComments",
-						new Model<String>("Show Comments")) {
-
-					/**
-							 * 
-							 */
-							private static final long serialVersionUID = 1L;
-					private boolean clicked = false;
-
-					@Override
-					public void onClick(AjaxRequestTarget target) {
-						clicked = !clicked;
-						if (clicked) {
-							comment.setDefaultModelObject("Hide comments");
-						} else {
-							
-							CommentThread commentThread = commentThreadDao.getCommentThread(resourceDao.reLoad(resource));
-							int commentSize = 0; 
-							if(commentThread != null)
-								commentSize = commentThread.getComments().size();
-
-							String comments = " Comments";
-							if (commentSize == 1) {
-								comments = " Comment";
-							}
-							comment.setDefaultModelObject(commentSize + comments);
-						}
-						webMarkupContainer.removeAll();
-						webMarkupContainer.add(new CommentThreadPanel("commentThread", resourceDao.reLoad(resource), 5));
-						webMarkupContainer.setVisible(clicked);
-						target.addComponent(webMarkupContainer);
-						target.addComponent(comment);
-					}
-
-				}.add(comment));
-				item.add(new AjaxLink<Void>("deleteResource") {
-
-					/**
-					 * 
-					 */
-					private static final long serialVersionUID = 1L;
-					@Override
-					public void onClick(AjaxRequestTarget target) {
-						Resource link2 = resourceDao.reLoad(resource);
-						resourceDao.delete(link2);
-						if (resourceType.equals(ResourceType.TAGVIEW)) {
-							resourcesList.remove(link2);
-							loadListView(resourcesList);
-						} else {
-							setResponsePage(ResourcePage.class);
-						}
-						listContainer.removeAll();
-						listContainer.add(pagingNavigator);
-						listContainer.add(linkListView);
-						target.addComponent(listContainer);
-
-					}
-
-					@Override
-					public boolean isVisible() {
-						Resource link2 = resourceDao.reLoad(resource);
-						if (link2.getCreator().equals(
-								userDao.load(SciProSession.get().getUser()
-										.getId()))) {
-							return true;
-
-						} else {
-							MetaDataActionStrategy.authorize(this, Roles.ADMIN,
-									true);
-							return true;
-						}
-					}
-			        @Override
-			        protected IAjaxCallDecorator getAjaxCallDecorator() {
-			            return new AjaxCallDecorator() {
-			                private static final long serialVersionUID = 8989126586010432130L;
-
-			                /* (non-Javadoc)
-			                 * @see org.apache.wicket.ajax.calldecorator.AjaxCallDecorator#decorateScript(java.lang.CharSequence)
-			                 */
-			                @Override
-			                public CharSequence decorateScript(CharSequence script) {
-			                    String ret = "if(!confirm('Do you really want to delete?')) return false; " + script;
-			                    return ret;
-			                }
-			            };
-			        }
-
-				});
-
-				item.add(new AjaxLink<Recipient>("editResource") {
-
-					/**
-					 * 
-					 */
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public void onClick(AjaxRequestTarget target) {
-						editResource = resourceDao.reLoad(resource);
-						if (resource.getEmbedCode() == null) {
-							info.setDefaultModelObject(editResource.getInfo());
-							editLinkResourceForm.loadTagView(editResource);
-							linkEditCategorySelectList.setDefaultModelObject(editResource.getCategoryList());
-							linkAddress.setDefaultModelObject(editResource
-									.getLink());
-							linkName.setDefaultModelObject(editResource
-									.getHeading());
-							target.addComponent(editLinkDialog);
-							editLinkDialog.open(target);
-						} else {
-							linkNameEmbed.setDefaultModelObject(editResource
-									.getHeading());
-							infoEmbed.setDefaultModelObject(editResource
-									.getInfo());
-							embedEditCategorySelectList.setDefaultModelObject(editResource.getCategoryList());
-							editEmbedResourceForm.loadTagView(editResource);
-							embedTextArea.setDefaultModelObject(editResource
-									.getEmbedCode());
-							target.addComponent(editEmbedDialog);
-							editEmbedDialog.open(target);
-						}
-					}
-
-					@Override
-					public boolean isVisible() {
-						Resource link2 = resourceDao.reLoad(resource);
-						if (link2.getCreator().equals(
-								userDao.load(SciProSession.get().getUser()
-										.getId()))) {
-							return true;
-
-						} else {
-							MetaDataActionStrategy.authorize(this, Roles.ADMIN,
-									true);
-							return true;
-						}
-					}
-
-				});
-				item.add(new HtmlWebMarkupContainer("embedCode", resource
-						.getEmbedCode()) {
-					/**
-							 * 
-							 */
-							private static final long serialVersionUID = 1L;
-
-					@Override
-					public boolean isVisible() {
-						return resource.getEmbedCode() != null;
-					}
-
-				});
-			};
-
-		};
-
-		listContainer.add(linkListView);
-
-		if (pagingNavigator != null) {
-			listContainer.add(pagingNavigator);
-		}
-	}
-
-	private class AddRateButton implements IClusterable {
-
-		/**
-		 * 
-		 */
-		private static final long serialVersionUID = 1L;
-		private AjaxLink<String> ajaxLinkUp, ajaxLinkDown;
-
-		public AddRateButton(ListItem<Resource> item) {
-			super();
-			addRateButton(item);
-		}
-
-		public void addRateButton(final ListItem<Resource> item) {
-
-			final Resource resource = item.getModelObject();
-
-			final StaticImage upArrowIcon;
-			final StaticImage upArrowGlowIcon;
-			final StaticImage downArrowIcon;
-			final StaticImage downArrowGlowIcon;
-			if (!resourceType.equals(ResourceType.NORMAL)) {
-				upArrowIcon = new StaticImage("upLinkIcon", new Model<String>(
-						"../../../images/icons/arrow-up.png"));
-				upArrowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				upArrowIcon.add(new AttributeAppender("alt", new Model<String>(
-						"up"), " "));
-				upArrowGlowIcon = new StaticImage("upLinkIcon",
-						new Model<String>(
-								"../../../images/icons/arrow-up-glow.png"));
-				upArrowGlowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				upArrowGlowIcon.add(new AttributeAppender("alt",
-						new Model<String>("up"), " "));
-				downArrowIcon = new StaticImage("downLinkIcon",
-						new Model<String>("../../../images/icons/arrow-down.png"));
-				downArrowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				downArrowIcon.add(new AttributeAppender("alt",
-						new Model<String>("down"), " "));
-				downArrowGlowIcon = new StaticImage("downLinkIcon",
-						new Model<String>(
-								"../../../images/icons/arrow-down-glow.png"));
-				downArrowGlowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				downArrowGlowIcon.add(new AttributeAppender("alt",
-						new Model<String>("down"), " "));
-			} else {
-				upArrowIcon = new StaticImage("upLinkIcon", new Model<String>(
-						"images/icons/arrow-up.png"));
-				upArrowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				upArrowIcon.add(new AttributeAppender("alt", new Model<String>(
-						"up"), " "));
-				upArrowGlowIcon = new StaticImage("upLinkIcon",
-						new Model<String>("images/icons/arrow-up-glow.png"));
-				upArrowGlowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				upArrowGlowIcon.add(new AttributeAppender("alt",
-						new Model<String>("up"), " "));
-				downArrowIcon = new StaticImage("downLinkIcon",
-						new Model<String>("images/icons/arrow-down.png"));
-				downArrowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				downArrowIcon.add(new AttributeAppender("alt",
-						new Model<String>("down"), " "));
-				downArrowGlowIcon = new StaticImage("downLinkIcon",
-						new Model<String>("images/icons/arrow-down-glow.png"));
-				downArrowGlowIcon.add(new AttributeAppender("class",
-						new Model<String>("icon-32"), " "));
-				downArrowGlowIcon.add(new AttributeAppender("alt",
-						new Model<String>("down"), " "));
-			}
-
-			final Label pointLabel;
-			item.add(pointLabel = new Label("rate", ratableDao
-					.getRating(resource) + ""));
-			pointLabel.setOutputMarkupId(true);
-			ajaxLinkUp = new AjaxLink<String>("upLink", new Model<String>("Up")) {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void onClick(AjaxRequestTarget target) {
-					Resource resourc = resourceDao.reLoad(resource);
-					List<Rating> ratingList = resourc.getRatingList();
-					boolean rated = false;
-					Rating rating = null;
-					for (Rating r : ratingList) {
-						if (r.getUser().equals(SciProSession.get().getUser())) {
-							rating = r;
-							rated = true;
-							break;
-						}
-					}
-
-					if (rating == null) {
-						rating = new Rating();
-						rating.setUser(SciProSession.get().getUser());
-					}
-					removeAll();
-					if (rated && rating.getRatingValue() == RatingValue.UP) {
-						ratingList.remove(rating);
-						resource.setRatingList(ratingList);
-						resourceDao.save(resource);
-						rating = ratingDao.reLoad(rating);
-						ratingDao.delete(rating);
-						add(upArrowIcon);
-					} else {
-						resource.setRatingList(ratingList);
-						rating.setRatingValue(RatingValue.UP);
-						rating = ratingDao.save(rating);
-						ratingList.add(rating);
-						ajaxLinkDown.removeAll();
-						ajaxLinkDown.add(downArrowIcon);
-						add(upArrowGlowIcon);
-
-					}
-					resourc = resourceDao.save(resourc);
-					point = ratableDao.getRating(resourc);
-					target.addComponent(this);
-					target.addComponent(ajaxLinkDown);
-					pointLabel.setDefaultModelObject(point);
-					target.addComponent(pointLabel);
-				}
-
-			};
-			if (isRated(RatingValue.UP, resource))
-				ajaxLinkUp.add(upArrowGlowIcon);
-			else
-				ajaxLinkUp.add(upArrowIcon);
-
-			item.add(ajaxLinkUp);
-			ajaxLinkUp.setOutputMarkupId(true);
-
-			ajaxLinkDown = new AjaxLink<String>("downLink", new Model<String>(
-					"Down")) {
-
-				/**
-						 * 
-						 */
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				public void onClick(AjaxRequestTarget target) {
-					Resource resourc = resourceDao.reLoad(resource);
-					List<Rating> ratingList = resourc.getRatingList();
-					boolean rated = false;
-					Rating rating = null;
-					for (Rating r : ratingList) {
-						if (r.getUser().equals(SciProSession.get().getUser())) {
-							rating = r;
-							rated = true;
-							break;
-						}
-					}
-					if (rating == null) {
-						rating = new Rating();
-						rating.setUser(SciProSession.get().getUser());
-					}
-					this.removeAll();
-					if (rated && rating.getRatingValue() == RatingValue.DOWN) {
-						ratingList.remove(rating);
-						resource.setRatingList(ratingList);
-						resourceDao.save(resourc);
-						rating = ratingDao.reLoad(rating);
-						ratingDao.delete(rating);
-						add(downArrowIcon);
-
-					} else {
-						rating.setRatingValue(RatingValue.DOWN);
-						rating = ratingDao.save(rating);
-						ratingList.add(rating);
-						add(downArrowGlowIcon);
-						ajaxLinkUp.removeAll();
-						ajaxLinkUp.add(upArrowIcon);
-					}
-
-					resourc = resourceDao.save(resourc);
-					point = ratableDao.getRating(resourc);
-					pointLabel.setDefaultModelObject(point);
-					target.addComponent(pointLabel);
-					target.addComponent(this);
-					target.addComponent(ajaxLinkUp);
-				}
-			};
-			ajaxLinkDown.setOutputMarkupId(true);
-			if (isRated(RatingValue.DOWN, resource))
-				ajaxLinkDown.add(downArrowGlowIcon);
-
-			else
-				ajaxLinkDown.add(downArrowIcon);
-			item.add(ajaxLinkDown);
-
-		}
-
-		public boolean isRated(RatingValue ratingValue, Resource resource) {
-			for (Rating r : resource.getRatingList()) {
-				if (r.getUser().equals(SciProSession.get().getUser())) {
-					if (r.getRatingValue().equals(ratingValue)) {
-						return true;
-					}
-					return false;
-
-				}
-			}
-			return false;
-		}
-	}
-
-	private class EditLinkResourceForm extends Form<ResourceModel> {
-
-		/**
-		 * 
-		 */
-		private static final long serialVersionUID = 1L;
-		private ListView<Tag> tagListView;
-		private List<Tag> tagList;
-		private WebMarkupContainer tagListContainer;
-
-		public EditLinkResourceForm(String name) {
-			super(name, new CompoundPropertyModel<ResourceModel>(
-					new ResourceModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<ResourceModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-			loadTagView(editResource);
-			tagListContainer = new WebMarkupContainer("tagListContainer");
-			tagListContainer.setOutputMarkupId(true);
-			add(tagListContainer);
-			tagListContainer.add(tagListView);
-			editLinkDialog.setTitle("Edit Link Resource");
-			UrlValidator urlValidator = new UrlValidator();
-			linkAddress = new TextField<String>("link");
-			linkAddress.add(urlValidator);
-
-			final TextField<String> tags = new TextField<String>("tags");
-			linkAddress.setRequired(true);
-			
-			add(linkName = new TextField<String>("linkName"));
-			add(linkAddress);
-			linkName.setRequired(true);
-			add(info = new TextArea<String>("info"));
-			info.setRequired(true);
-			add(tags);
-			
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			linkEditCategorySelectList = new ListMultipleChoice<Category>(
-					"selectedCategoryCollection", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-				private static final long serialVersionUID = -7117603450416845711L;
-
-			};
-
-			linkEditCategorySelectList.setRequired(true);
-			linkEditCategorySelectList.setOutputMarkupId(true);
-			add(linkEditCategorySelectList);
-
-			add(new AjaxButton("submitButton", new Model<String>(
-					"Save Resource")) {
-
-				/**
-						 * 
-						 */
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					editResource = resourceDao.reLoad(editResource);
-					Resource link = editResource;
-					ResourceModel resourceModel = ((ResourceModel) form
-							.getModelObject());
-
-					String tags = resourceModel.getTags();
-					if (tags != null) {
-						StringTokenizer stringTokenizer = new StringTokenizer(
-								tags, ",");
-
-						while (stringTokenizer.hasMoreTokens()) {
-							String tagString = stringTokenizer.nextToken()
-									.trim();
-							if (null != tagDao.findExactTagQuery(tagString)) {
-								if (!tagList.contains(tagDao
-										.findExactTagQuery(tagString))) {
-									tagList.add(tagDao
-											.findExactTagQuery(tagString));
-								}
-							} else if (!tagString.equals("")) {
-								Tag tag = new Tag();
-								tagString = tagString.toLowerCase();
-								tag.setTag(tagString);
-
-								tag = tagDao.save(tag);
-								tagList.add(tag);
-							}
-
-						}
-					}
-
-					link.setInfo(resourceModel.getInfo());
-					link.setLink(resourceModel.getLink());
-					link.setCreator(SciProSession.get().getUser());
-					link.setCategoryList(new ArrayList<Category>(resourceModel.getSelectedCategoryCollection()));
-					link.setTagList(tagList);
-					link.setLastModified(new Date());
-					if (resourceModel.getLinkName() != null) {
-						link.setHeading(resourceModel.getLinkName());
-					}
-					resourceDao.save(link);
-
-					resourceModel.setLink("");
-					resourceModel.setLinkName("");
-					resourceModel.setTags("");
-					resourceModel.setInfo("");
-
-					if (!resourceType.equals(ResourceType.NORMAL)) {
-						loadListView(resourcesList);
-					} else {
-						loadListView(resourceDao.findAll());
-					}
-
-					target.addComponent(listContainer);
-					editLinkDialog.close(target);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-
-		public void loadTagView(final Resource resource) {
-			final Resource resource2 = resourceDao.reLoad(resource);
-			tagList = new ArrayList<Tag>();
-
-			if (resource2 != null) {
-				tagList = resource2.getTagList();
-				tagListContainer.remove(tagListView);
-			}
-
-			tagListView = new ListView<Tag>("tag-item", tagList) {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void populateItem(final ListItem<Tag> item) {
-					final Tag tag = item.getModelObject();
-					final WebMarkupContainer tagContainer = new WebMarkupContainer(
-							"tagContainer");
-					tagContainer.setOutputMarkupId(true);
-					final Label label;
-					tagContainer.add(label = new Label("tag", tag.getTag()));
-					label.setOutputMarkupId(true);
-
-					final AjaxLink<Void> deleteLink;
-					tagContainer
-							.add(deleteLink = new AjaxLink<Void>("deleteTag") {
-
-								/**
-								 * 
-								 */
-								private static final long serialVersionUID = 1L;
-								@Override
-								public void onClick(AjaxRequestTarget target) {
-									tagList.remove(tag);
-									target.addComponent(tagListContainer);
-								}
-						        @Override
-						        protected IAjaxCallDecorator getAjaxCallDecorator() {
-						            return new AjaxCallDecorator() {
-						                private static final long serialVersionUID = 8989126586010432130L;
-
-						                /* (non-Javadoc)
-						                 * @see org.apache.wicket.ajax.calldecorator.AjaxCallDecorator#decorateScript(java.lang.CharSequence)
-						                 */
-						                @Override
-						                public CharSequence decorateScript(CharSequence script) {
-						                    String ret = "if(!confirm('Do you really want to delete?')) return false; " + script;
-						                    return ret;
-						                }
-						            };
-						        }
-							});
-					deleteLink.setOutputMarkupId(true);
-					item.add(tagContainer);
-				}
-			};
-			if (resource2 != null) {
-				tagListContainer.add(tagListView);
-			}
-
-		}
-	}
-
-	private class EditEmbedResourceForm extends Form<ResourceModel> {
-
-		/**
-		 * 
-		 */
-		private static final long serialVersionUID = 1L;
-		private ListView<Tag> tagListView;
-		private List<Tag> tagList;
-		private WebMarkupContainer tagListContainer;
-
-		public EditEmbedResourceForm(String name) {
-			super(name, new CompoundPropertyModel<ResourceModel>(
-					new ResourceModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<ResourceModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-			loadTagView(editResource);
-			tagListContainer = new WebMarkupContainer("tagListContainerEmbed");
-			tagListContainer.setOutputMarkupId(true);
-			add(tagListContainer);
-			tagListContainer.add(tagListView);
-			editEmbedDialog.setTitle("Edit Embed Resource");
-			add(linkNameEmbed = new TextField<String>("linkName"));
-			linkNameEmbed.setRequired(true);
-			add(embedTextArea = new TextArea<String>("embedCode"));
-			embedTextArea.setRequired(true);
-			add(infoEmbed = new TextArea<String>("info"));
-			infoEmbed.setRequired(true);
-			
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			embedEditCategorySelectList = new ListMultipleChoice<Category>(
-					"selectedCategoryCollection", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-				private static final long serialVersionUID = -7117603450416845711L;
-
-			};
-
-			embedEditCategorySelectList.setRequired(true);
-			embedEditCategorySelectList.setOutputMarkupId(true);
-			add(embedEditCategorySelectList);
-
-			final TextField<String> tags = new TextField<String>("tags");
-			add(tags);
-
-			add(new AjaxButton("submitButton", new Model<String>(
-					"Save Resource")) {
-
-				/**
-						 * 
-						 */
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					editResource = resourceDao.reLoad(editResource);
-					Resource link = editResource;
-					ResourceModel resourceModel = ((ResourceModel) form
-							.getModelObject());
-
-					String tags = resourceModel.getTags();
-					if (tags != null) {
-						StringTokenizer stringTokenizer = new StringTokenizer(
-								tags, ",");
-
-						while (stringTokenizer.hasMoreTokens()) {
-							String tagString = stringTokenizer.nextToken()
-									.trim();
-							if (null != tagDao.findExactTagQuery(tagString)) {
-								if (!tagList.contains(tagDao
-										.findExactTagQuery(tagString))) {
-									tagList.add(tagDao
-											.findExactTagQuery(tagString));
-								}
-							} else if (!tagString.equals("")) {
-								Tag tag = new Tag();
-								tagString = tagString.toLowerCase();
-								tag.setTag(tagString);
-
-								tag = tagDao.save(tag);
-								tagList.add(tag);
-							}
-
-						}
-					}
-					link.setCategoryList(new ArrayList<Category>(resourceModel.getSelectedCategoryCollection()));
-					link.setHeading(resourceModel.getLinkName());
-					link.setEmbedCode(resourceModel.getEmbedCode());
-					link.setInfo(resourceModel.getInfo());
-					link.setCreator(SciProSession.get().getUser());
-					link.setTagList(tagList);
-
-					link.setLastModified(new Date());
-					if (resourceModel.getLinkName() != null) {
-						link.setHeading(resourceModel.getLinkName());
-					}
-					resourceDao.save(link);
-
-					resourceModel.setLink("");
-					resourceModel.setLinkName("");
-					resourceModel.setTags("");
-					resourceModel.setInfo("");
-
-					if (!resourceType.equals(ResourceType.NORMAL)) {
-						loadListView(resourcesList);
-					} else {
-						loadListView(resourceDao.findAll());
-					}
-
-					target.addComponent(listContainer);
-					editEmbedDialog.close(target);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-
-		public void loadTagView(final Resource resource) {
-			final Resource resource2 = resourceDao.reLoad(resource);
-			tagList = new ArrayList<Tag>();
-
-			if (resource2 != null) {
-				tagList = resource2.getTagList();
-				tagListContainer.remove(tagListView);
-			}
-
-			tagListView = new ListView<Tag>("tag-embed-item", tagList) {
-
-				/**
-				 * 
-				 */
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void populateItem(final ListItem<Tag> item) {
-					final Tag tag = item.getModelObject();
-					final WebMarkupContainer tagContainer = new WebMarkupContainer(
-							"tagEmbedContainer");
-					tagContainer.setOutputMarkupId(true);
-					tagContainer.add(new Label("tagEmbed", tag.getTag()));
-					tagContainer.add(new AjaxLink<Void>("deleteTagEmbed") {
-
-						/**
-						 * 
-						 */
-						private static final long serialVersionUID = 1L;
-						@Override
-						public void onClick(AjaxRequestTarget target) {
-							tagList.remove(tag);
-							target.addComponent(tagListContainer);
-						}
-				        @Override
-				        protected IAjaxCallDecorator getAjaxCallDecorator() {
-				            return new AjaxCallDecorator() {
-				                private static final long serialVersionUID = 8989126586010432130L;
-
-				                /* (non-Javadoc)
-				                 * @see org.apache.wicket.ajax.calldecorator.AjaxCallDecorator#decorateScript(java.lang.CharSequence)
-				                 */
-				                @Override
-				                public CharSequence decorateScript(CharSequence script) {
-				                    String ret = "if(!confirm('Do you really want to delete?')) return false; " + script;
-				                    return ret;
-				                }
-				            };
-				        }
-					});
-					item.add(tagContainer);
-				}
-			};
-			if (resource2 != null) {
-				tagListContainer.add(tagListView);
-			}
-
-		}
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.properties b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.properties
deleted file mode 100644
index dcc105770c..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourceListPanel.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-editLinkDialog.editLinkDialogContainer.editLinkResourceForm.link=Link Address
-editLinkDialog.editLinkDialogContainer.editLinkResourceForm.linkName=Link Name
-editLinkDialog.editLinkDialogContainer.editLinkResourceForm.info=Info
-editLinkDialog.editLinkDialogContainer.editLinkResourceForm.tags=Tags
-editLinkDialog.editLinkDialogContainer.editLinkResourceForm.selectedCategoryCollection=Categories
-editEmbedDialog.editEmbedDialogContainer.editEmbedResourceForm.linkName=Heading
-editEmbedDialog.editEmbedDialogContainer.editEmbedResourceForm.embedCode=Embed Code
-editEmbedDialog.editEmbedDialogContainer.editEmbedResourceForm.info=Info
-editEmbedDialog.editEmbedDialogContainer.editEmbedResourceForm.tags=Tags
-editEmbedDialog.editEmbedDialogContainer.editEmbedResourceForm.selectedCategoryCollection=Categories
-Required='${label}' is required
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.html b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.html
deleted file mode 100644
index 53444cecd4..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-
-		
-			<h2>Resources</h2>
-			<div><a href="#" wicket:id="addLinkResource">Add Link Resource</a></div>
-			<div><a href="#" wicket:id="addEmbedResource">Add Embed Resource</a></div>
-			<div><a href="#" wicket:id="addCategories">Add Categories</a></div>
-			<div><a href="#" wicket:id="adminCategories">Edit Categories</a></div>
-			
-			<div wicket:id="container">
-			<div wicket:id="resourceListPanel"></div>
-			</div>
-			<div wicket:id="dialog">
-				<div wicket:id="dialogContainer">
-	       		<form wicket:id="resourceForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel">
-	       				</div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Link Name:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="linkName" class ="span-6"/>
-					</div>
-					<div class ="span-6 last">
-						<strong>Link Address:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="link" class ="span-6" />
-					</div>
-					<div class ="span-6 last">
-						<strong>Info:</strong>
-					</div>
-					<div class ="span-6 last">
-						<textarea  wicket:id="info" ></textarea>	
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-6 last">
-						<select wicket:id="selectedCategoryCollection" class ="span-8 last"></select>
-          			</div>
-					<div class ="span-6 last">
-						<strong>Tags:</strong>
-					</div>
-					<div class ="span-6 last">
-						Separate by comma.
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="tags" class ="span-6" />
-					</div>
-							<div class ="span-6 last"><input type="submit" wicket:id="submitButton"  /> </div>
-				</form>
-			</div>
-		</div>
-		<div wicket:id="embedDialog">
-				<div wicket:id="embedDialogContainer">
-	       		<form wicket:id="embedResourceForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel"></div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Heading:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="linkName" class ="span-6"/>
-					</div>
-					<div class ="span-6 last">
-						<strong>Embed Code:</strong>
-					</div>
-					<div class ="span-8 last">
-						Disclaimer: no security checks at the moment.
-					</div>
-					<div class ="span-6 last">
-						<textarea  wicket:id="embedCode" ></textarea>
-					</div>
-					<div class ="span-6 last">
-						<strong>Info:</strong>
-					</div>
-					<div class ="span-6 last">
-						<textarea wicket:id="info" ></textarea>	
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-6 last">
-						<select wicket:id="selectedCategoryCollection" class ="span-8 last"></select>
-          			</div>
-					<div class ="span-6 last">
-						<strong>Tags:</strong>
-					</div>
-					<div class ="span-6 last">
-						Separate by comma.
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="tags" class ="span-6" />
-					</div>
-							<div class ="span-6 last"><input type="submit" wicket:id="submitButton"  /> </div>
-				</form>
-			</div>
-		</div>
-		
-		<div wicket:id="adminCategoriesDialog">
-				<div wicket:id="adminCategoriesContainer">
-	       		<form wicket:id="adminCategoriesForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel"></div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-8 last">
-						<select wicket:id="selectedCategory" class ="span-8 last"></select>
-          			</div>
-          			<div class ="span-6 last">
-						<strong>Category Name:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="categoryName" class ="span-6" />
-					</div>
-					<div>
-
-					</div>
-							<div class ="span-6 last">			
-								<input type="submit" wicket:id="editButton"  /> 
-								<input type="submit" wicket:id="deleteCategory"  /> 
-							</div>
-							<div class ="span-6 last">	
-								<input type="submit" wicket:id="closeButton"  /> 
-							</div>
-				</form>
-			</div>
-		</div>
-		
-				<div wicket:id="addCategoriesDialog">
-				<div wicket:id="addCategoriesContainer">
-	       		<form wicket:id="addCategoriesForm">
-	       			<div wicket:id="feedbackContainer" class ="span-8 last">
-	       				<div  wicket:id="feedbackPanel"></div>
-					</div>
-					<div class ="span-6 last">
-						<strong>Categories:</strong>
-					</div>
-					<div class ="span-8 last">
-						<select wicket:id="selectedCategory" class ="span-8 last"></select>
-          			</div>
-          			<div class ="span-6 last">
-						<strong>Category Name:</strong>
-					</div>
-					<div class ="span-6 last">
-						<input type="text" wicket:id="categoryName" class ="span-6" />
-					</div>
-
-					<div class ="span-6 last"><input type="submit" wicket:id="addButton"  /> 
-					</div>
-					<div class ="span-6 last">
-					<input type="submit" wicket:id="closeButton"  /> 
-					</div>
-				</form>
-			</div>
-		</div>
-		
-</wicket:panel>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.java b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.java
deleted file mode 100644
index 02a0fbeb6d..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.java
+++ /dev/null
@@ -1,749 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.knol.resource.panels;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.IAjaxCallDecorator;
-import org.apache.wicket.ajax.calldecorator.AjaxCallDecorator;
-import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.form.ListChoice;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.validation.validator.UrlValidator;
-import org.odlabs.wiquery.core.javascript.JsScopeContext;
-import org.odlabs.wiquery.ui.core.JsScopeUiEvent;
-import org.odlabs.wiquery.ui.dialog.Dialog;
-
-import se.su.dsv.scipro.SciProSession;
-import se.su.dsv.scipro.components.FormFeedbackPanel;
-import se.su.dsv.scipro.data.dao.interfaces.CategoryDao;
-import se.su.dsv.scipro.data.dao.interfaces.ResourceDao;
-import se.su.dsv.scipro.data.dao.interfaces.TagDao;
-import se.su.dsv.scipro.data.dataobjects.Category;
-import se.su.dsv.scipro.data.dataobjects.Resource;
-import se.su.dsv.scipro.data.dataobjects.Tag;
-import se.su.dsv.scipro.data.enums.ResourceType;
-import se.su.dsv.scipro.knol.resource.model.CategoryModel;
-import se.su.dsv.scipro.knol.resource.model.ResourceModel;
-import se.su.dsv.scipro.knol.resource.page.ResourcePage;
-import se.su.dsv.scipro.security.auth.MetaDataActionStrategy;
-import se.su.dsv.scipro.security.auth.roles.Roles;
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- * 
- */
-public class ResourcesPanel extends Panel {
-
-	private static final long serialVersionUID = 1L;
-
-	@SpringBean
-	private TagDao tagDao;
-
-	@SpringBean
-	private ResourceDao resourceDao;
-
-	@SpringBean
-	private CategoryDao categoryDao;
-
-	private WebMarkupContainer linkDialogContainer, embedDialogContainer,
-			editCategoriesContainer, container, addCategoriesContainer;
-	private Dialog linkDialog, embedDialog, editCategoriesDialog,
-			addCategoriesDialog;
-
-	private TextField<String> linkNameEmbed;
-	private ResourceListPanel resourceListPanel;
-
-	public ResourcesPanel(String id) {
-		super(id);
-		container = new WebMarkupContainer("container");
-		container.setOutputMarkupId(true);
-		container
-				.add(resourceListPanel = new ResourceListPanel(
-						"resourceListPanel", resourceDao.findAll(),
-						ResourceType.NORMAL));
-		add(container);
-		resourceListPanel.setOutputMarkupId(true);
-		linkDialogContainer = new WebMarkupContainer("dialogContainer");
-		linkDialog = new Dialog("dialog");
-		linkDialog.setModal(true);
-		linkDialog.setAutoOpen(false);
-		linkDialog.setWidth(470);
-		linkDialog.add(linkDialogContainer);
-		add(linkDialog);
-		linkDialogContainer.setOutputMarkupId(true);
-		linkDialogContainer.add(new AddLinkResourceForm("resourceForm"));
-
-		embedDialogContainer = new WebMarkupContainer("embedDialogContainer");
-		embedDialog = new Dialog("embedDialog");
-		embedDialog.setModal(true);
-		embedDialog.setAutoOpen(false);
-		embedDialog.setWidth(470);
-		embedDialog.add(embedDialogContainer);
-		add(embedDialog);
-		embedDialogContainer.setOutputMarkupId(true);
-		embedDialogContainer.add(new AddEmbedResourceForm("embedResourceForm"));
-
-		editCategoriesContainer = new WebMarkupContainer(
-				"adminCategoriesContainer");
-		editCategoriesDialog = new Dialog("adminCategoriesDialog");
-		editCategoriesDialog.setModal(true);
-		editCategoriesDialog.setAutoOpen(false);
-		editCategoriesDialog.setWidth(470);
-		// editCategoriesDialog.setHeight(340);
-		editCategoriesDialog.setCloseEvent(new JsScopeUiEvent() {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void execute(JsScopeContext scopeContext) {
-				scopeContext.append("window.location.reload()");
-
-			}
-		});
-		editCategoriesDialog.add(editCategoriesContainer);
-		add(editCategoriesDialog);
-		editCategoriesContainer.setOutputMarkupId(true);
-		editCategoriesContainer.add(new EditCategoriesForm(
-				"adminCategoriesForm"));
-
-		addCategoriesContainer = new WebMarkupContainer(
-				"addCategoriesContainer");
-		addCategoriesDialog = new Dialog("addCategoriesDialog");
-		addCategoriesDialog.setModal(true);
-		addCategoriesDialog.setAutoOpen(false);
-		addCategoriesDialog.setWidth(470);
-		// addCategoriesDialog.setHeight(340);
-		addCategoriesDialog.setCloseEvent(new JsScopeUiEvent() {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void execute(JsScopeContext scopeContext) {
-				scopeContext.append("window.location.reload()");
-
-			}
-		});
-		addCategoriesDialog.add(addCategoriesContainer);
-		add(addCategoriesDialog);
-		addCategoriesContainer.setOutputMarkupId(true);
-		addCategoriesContainer.add(new AddCategoriesForm("addCategoriesForm"));
-
-		add(new AjaxLink<String>("addLinkResource", new Model<String>(
-				"Add Link Resource")) {
-
-
-					private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-				target.addComponent(linkDialog);
-				linkDialog.open(target);
-			}
-		});
-		
-		add(new AjaxLink<String>("addEmbedResource", new Model<String>(
-				"Add Link Resource")) {
-
-
-					private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-				target.addComponent(embedDialog);
-				embedDialog.open(target);
-			}
-			
-			@Override
-			public boolean isVisible(){
-				return false; //TODO Made invisible for initial deployment because it allows dangerous code to be pasted
-			}
-		});
-		AjaxLink<String> editCategories, addCategories;
-		add(editCategories = new AjaxLink<String>("adminCategories") {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-				target.addComponent(editCategoriesDialog);
-				editCategoriesDialog.open(target);
-			}
-
-		});
-
-		add(addCategories = new AjaxLink<String>("addCategories") {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClick(AjaxRequestTarget target) {
-				target.addComponent(addCategoriesDialog);
-				addCategoriesDialog.open(target);
-			}
-		});
-		MetaDataActionStrategy.authorize(editCategories, Roles.ADMIN, true);
-		MetaDataActionStrategy.authorize(addCategories, Roles.ADMIN, true);
-	}
-
-	private class AddLinkResourceForm extends Form<ResourceModel> {
-
-		private static final long serialVersionUID = 1L;
-
-		public AddLinkResourceForm(String name) {
-			super(name, new CompoundPropertyModel<ResourceModel>(
-					new ResourceModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<ResourceModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-			linkDialog.setTitle("Add Link Resource");
-
-			final TextArea<String> info;
-			final TextField<String> linkName;
-			UrlValidator urlValidator = new UrlValidator();
-			final TextField<String> linkAddress = new TextField<String>("link");
-			linkAddress.add(urlValidator);
-			final TextField<String> tags = new TextField<String>("tags");
-			tags.setRequired(true);
-			linkAddress.setRequired(true);
-			
-			add(linkName = new TextField<String>("linkName"));
-			add(linkAddress);
-			add(info = new TextArea<String>("info"));
-			info.setRequired(true);
-
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			final ListMultipleChoice<Category> categorySelectList = new ListMultipleChoice<Category>(
-					"selectedCategoryCollection", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-				private static final long serialVersionUID = -7117603450416845711L;
-
-			};
-
-			categorySelectList.setRequired(true);
-			categorySelectList.setOutputMarkupId(true);
-			add(categorySelectList);
-
-			add(tags);
-
-			linkName.setRequired(true);
-			add(new AjaxButton("submitButton", new Model<String>(
-					"Save Resource")) {
-
-
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					Resource link = new Resource();
-					ResourceModel resourceModel = ((ResourceModel) form
-							.getModelObject());
-
-					String tags = resourceModel.getTags();
-
-					List<Tag> tagList = new ArrayList<Tag>();
-					if (tags != null) {
-						StringTokenizer stringTokenizer = new StringTokenizer(
-								tags, ",");
-
-						while (stringTokenizer.hasMoreTokens()) {
-							String tagString = stringTokenizer.nextToken()
-									.trim();
-							if (null != tagDao.findExactTagQuery(tagString)) {
-								tagList.add(tagDao.findExactTagQuery(tagString));
-							} else if (!tagString.equals("")) {
-								Tag tag = new Tag();
-								tagString = tagString.toLowerCase();
-								tag.setTag(tagString);
-
-								tag = tagDao.save(tag);
-								tagList.add(tag);
-							}
-
-						}
-					}
-					link.setCategoryList(new ArrayList<Category>(resourceModel
-							.getSelectedCategoryCollection()));
-					link.setInfo(resourceModel.getInfo());
-					link.setLink(resourceModel.getLink());
-					link.setCreator(SciProSession.get().getUser());
-					link.setTagList(tagList);
-					if (resourceModel.getLinkName() != null) {
-						link.setHeading(resourceModel.getLinkName());
-					}
-					resourceDao.save(link);
-					resourceModel.setLink("");
-					resourceModel.setLinkName("");
-					resourceModel.setTags("");
-					resourceModel.setInfo("");
-					linkDialog.close(target);
-					setResponsePage(ResourcePage.class);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-	}
-
-	private class AddEmbedResourceForm extends Form<ResourceModel> {
-
-		private static final long serialVersionUID = 1L;
-
-		public AddEmbedResourceForm(String name) {
-			super(name, new CompoundPropertyModel<ResourceModel>(
-					new ResourceModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<ResourceModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-
-			embedDialog.setTitle("Add Embed Resource");
-			add(linkNameEmbed = new TextField<String>("linkName"));
-			linkNameEmbed.setRequired(true);
-			final TextArea<String> embedTextArea;
-			add(embedTextArea = new TextArea<String>("embedCode"));
-			embedTextArea.setRequired(true);
-			final TextArea<String> info;
-			add(info = new TextArea<String>("info"));
-			info.setRequired(true);
-			final TextField<String> tags = new TextField<String>("tags");
-			tags.setRequired(true);
-
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			final ListMultipleChoice<Category> categorySelectList = new ListMultipleChoice<Category>(
-					"selectedCategoryCollection", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-				private static final long serialVersionUID = -7117603450416845711L;
-
-			};
-
-			categorySelectList.setRequired(true);
-			categorySelectList.setOutputMarkupId(true);
-			add(categorySelectList);
-			add(tags);
-
-			add(new AjaxButton("submitButton", new Model<String>(
-					"Save Resource")) {
-
-
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					Resource link;
-
-					link = new Resource();
-
-					ResourceModel resourceModel = ((ResourceModel) form
-							.getModelObject());
-
-					String tags = resourceModel.getTags();
-
-					List<Tag> tagList = new ArrayList<Tag>();
-					if (tags != null) {
-						StringTokenizer stringTokenizer = new StringTokenizer(
-								tags, ",");
-
-						while (stringTokenizer.hasMoreTokens()) {
-							String tagString = stringTokenizer.nextToken()
-									.trim();
-							if (null != tagDao.findExactTagQuery(tagString)) {
-								tagList.add(tagDao.findExactTagQuery(tagString));
-							} else if (!tagString.equals("")) {
-								Tag tag = new Tag();
-								tagString = tagString.toLowerCase();
-								tag.setTag(tagString);
-
-								tag = tagDao.save(tag);
-								tagList.add(tag);
-							}
-
-						}
-					}
-					link.setHeading(resourceModel.getLinkName());
-					link.setEmbedCode(resourceModel.getEmbedCode());
-					link.setInfo(resourceModel.getInfo());
-					link.setCategoryList(new ArrayList<Category>(resourceModel
-							.getSelectedCategoryCollection()));
-					link.setCreator(SciProSession.get().getUser());
-					link.setTagList(tagList);
-					if (resourceModel.getLinkName() != null) {
-						link.setHeading(resourceModel.getLinkName());
-					}
-					resourceDao.save(link);
-
-					resourceModel.setLink("");
-					resourceModel.setLinkName("");
-					resourceModel.setTags("");
-					resourceModel.setInfo("");
-					embedDialog.close(target);
-					setResponsePage(ResourcePage.class);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-
-	}
-
-	private class EditCategoriesForm extends Form<CategoryModel> {
-
-		private static final long serialVersionUID = 1L;
-		private Category category;
-
-		public EditCategoriesForm(String name) {
-			super(name, new CompoundPropertyModel<CategoryModel>(
-					new CategoryModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<CategoryModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-
-			editCategoriesDialog.setTitle("Edit Categories");
-			final TextField<String> categoryName = new TextField<String>(
-					"categoryName");
-			add(categoryName);
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			final ListChoice<Category> categorySelectList = new ListChoice<Category>(
-					"selectedCategory", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-
-								private static final long serialVersionUID = 1L;
-
-				@Override
-				protected CharSequence getDefaultChoice(Object selected) {
-					return "";
-				}
-
-			};
-
-			categorySelectList.setOutputMarkupId(true);
-
-			OnChangeAjaxBehavior userSelectBehaviour = new OnChangeAjaxBehavior() {
-
-				private static final long serialVersionUID = 3412906970812300312L;
-
-				@Override
-				protected void onUpdate(AjaxRequestTarget target) {
-					category = categoryDao.reLoad(getModelObject()
-							.getCategory());
-					if (category != null) {
-						getModelObject().setCategoryName(
-								category.getCategoryName());
-						target.addComponent(editCategoriesContainer);
-					}
-				}
-			};
-
-			add(new AjaxButton("deleteCategory", new Model<String>(
-					"Delete Category")) {
-
-
-						private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					if (category != null) {
-						category = categoryDao.reLoad(category);
-						for (Resource resource : resourceDao
-								.findResourcesByCategory(category)) {
-
-							List<Category> categoryList = resource
-									.getCategoryList();
-							categoryList.remove(category);
-							resource.setCategoryList(categoryList);
-							resourceDao.save(resource);
-						}
-						categoryDao.delete(category);
-
-						categorySelectList.setChoices(categoryDao.findAll());
-						EditCategoriesForm.this.getModelObject()
-								.setCategoryName("");
-						target.addComponent(editCategoriesContainer);
-						info("Category deleted");
-					} else {
-						error("No category selected");
-					}
-				}
-
-				@Override
-				protected IAjaxCallDecorator getAjaxCallDecorator() {
-					return new AjaxCallDecorator() {
-						private static final long serialVersionUID = 8989126586010432130L;
-
-						/*
-						 * (non-Javadoc)
-						 * 
-						 * @see
-						 * org.apache.wicket.ajax.calldecorator.AjaxCallDecorator
-						 * #decorateScript(java.lang.CharSequence)
-						 */
-						@Override
-						public CharSequence decorateScript(CharSequence script) {
-							String ret = "if(!confirm('Do you really want to delete?')) return false; "
-									+ script;
-							return ret;
-						}
-					};
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-			categorySelectList.add(userSelectBehaviour);
-			add(categorySelectList);
-
-			add(new AjaxButton("editButton", new Model<String>("Save Edit")) {
-
-
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					if (category == null) {
-						error("No category selected");
-					} else if (EditCategoriesForm.this.getModelObject()
-							.getCategoryName() == null) {
-						error("Category must have a name");
-					} else if (categoryDao
-							.reLoad(category)
-							.getCategoryName()
-							.equals(EditCategoriesForm.this.getModelObject()
-									.getCategoryName())) {
-						error("No change");
-					} else {
-						category = categoryDao.reLoad(category);
-						category.setCategoryName(EditCategoriesForm.this
-								.getModelObject().getCategoryName());
-						categoryDao.save(category);
-						info("Category changed");
-						categorySelectList.setChoices(categoryDao.findAll());
-						target.addComponent(editCategoriesContainer);
-					}
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-
-			});
-
-			add(new AjaxButton("closeButton", new Model<String>("Close")) {
-
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					editCategoriesDialog.close(target);
-					setResponsePage(ResourcePage.class);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-	}
-
-	private class AddCategoriesForm extends Form<CategoryModel> {
-
-		private static final long serialVersionUID = 1L;
-
-		public AddCategoriesForm(String name) {
-			super(name, new CompoundPropertyModel<CategoryModel>(
-					new CategoryModel()));
-			final WebMarkupContainer feedbackContainer = new WebMarkupContainer(
-					"feedbackContainer");
-			feedbackContainer.setOutputMarkupId(true);
-			WebMarkupContainer feedbackPanel = new FormFeedbackPanel<CategoryModel>(
-					"feedbackPanel", this);
-			feedbackContainer.add(feedbackPanel);
-			add(feedbackContainer);
-
-			addCategoriesDialog.setTitle("Add Categories");
-			final TextField<String> categoryName = new TextField<String>(
-					"categoryName");
-			add(categoryName);
-			IChoiceRenderer<Category> choiceRenderer = new IChoiceRenderer<Category>() {
-
-				private static final long serialVersionUID = 1L;
-
-				// Implement dispay here
-				public Object getDisplayValue(Category category) {
-					return category.getCategoryName();
-				}
-
-				@Override
-				public String getIdValue(Category category, int arg1) {
-					return category.getId().toString();
-				}
-
-			};
-
-			final ListChoice<Category> categorySelectList = new ListChoice<Category>(
-					"selectedCategory", new ListModel<Category>(
-							categoryDao.findAll()), choiceRenderer) {
-
-								private static final long serialVersionUID = 1L;
-
-				@Override
-				protected CharSequence getDefaultChoice(Object selected) {
-					return "";
-				}
-
-			};
-
-			categorySelectList.setOutputMarkupId(true);
-
-			add(categorySelectList);
-
-			add(new AjaxButton("addButton", new Model<String>("Add Category")) {
-
-
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					CategoryModel categoryModel = (CategoryModel) form
-							.getModelObject();
-
-					if (categoryModel.getCategoryName() == null) {
-						error("Category must have a name");
-					} else {
-						Category category = categoryDao
-								.findExactCategoryQuery(categoryModel
-										.getCategoryName());
-						if (category == null) {
-							Category cat = new Category();
-							cat.setCategoryName(categoryModel.getCategoryName());
-							categoryDao.save(cat);
-							categorySelectList
-									.setChoices(categoryDao.findAll());
-							AddCategoriesForm.this.getModelObject()
-									.setCategoryName("");
-							target.addComponent(addCategoriesContainer);
-							info("Category added");
-						} else {
-							error("Category already exists");
-						}
-					}
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-			add(new AjaxButton("closeButton", new Model<String>("Close")) {
-
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					addCategoriesDialog.close(target);
-					setResponsePage(ResourcePage.class);
-				}
-
-				@Override
-				protected void onError(final AjaxRequestTarget target,
-						final Form<?> form) {
-					target.addComponent(feedbackContainer);
-				}
-			});
-
-		}
-
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.properties b/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.properties
deleted file mode 100644
index 24c5640321..0000000000
--- a/src/main/java/se/su/dsv/scipro/knol/resource/panels/ResourcesPanel.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-dialog.dialogContainer.resourceForm.link=Link Address
-dialog.dialogContainer.resourceForm.linkName=Link Name
-dialog.dialogContainer.resourceForm.info=Info
-dialog.dialogContainer.resourceForm.tags=Tags
-dialog.dialogContainer.resourceForm.selectedCategoryCollection = Categories
-embedDialog.embedDialogContainer.embedResourceForm.linkName=Heading
-embedDialog.embedDialogContainer.embedResourceForm.embedCode=Embed Code
-embedDialog.embedDialogContainer.embedResourceForm.info=Info
-embedDialog.embedDialogContainer.embedResourceForm.tags=Tags
-embedDialog.embedDialogContainer.embedResourceForm.selectedCategoryCollection=Categories
-Required='${label}' is required
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/log/facade/LogFacade.java b/src/main/java/se/su/dsv/scipro/log/facade/LogFacade.java
deleted file mode 100644
index 0d8d0a98a5..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/facade/LogFacade.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package se.su.dsv.scipro.log.facade;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import se.su.dsv.scipro.data.dao.interfaces.LogDao;
-import se.su.dsv.scipro.data.dao.interfaces.LogEntryDao;
-import se.su.dsv.scipro.data.dataobjects.Log;
-import se.su.dsv.scipro.data.dataobjects.LogEntry;
-import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.data.dataobjects.User;
-import se.su.dsv.scipro.exceptions.RenderingSafeException;
-
-/**
- * Service facade for logs and their log entries.
- */
-@Service
-public class LogFacade {
-	
-	@Autowired
-	private LogDao logDao;
-	@Autowired
-	private LogEntryDao logEntryDao;
-	private final Logger logger = Logger.getLogger(LogFacade.class);
-	
-	/**
-	 * Retrieves a log for the given project, if none exists it will be silently created and returned.
-	 * If the project parameter is null, a wrapped UnsupportedOperationException is thrown.
-	 * @param p
-	 * @return The log.
-	 */
-	@Transactional
-	public Log retrieveLog(final Project p){
-		if(p == null)
-			throw new RenderingSafeException(new UnsupportedOperationException("Sorry, can't retrieve a log without a valid project"));
-		Log log = p.getLog();
-		if(log == null){
-			logger.debug("No existing log for project "+p+", creating a new one");
-			log = new Log(p);
-			log.updateTimeStamps();
-			log = logDao.save(log);
-			p.setLog(log);
-		}
-		return log;
-	}
-	
-	/**
-	 * Creates a new log entry and makes the needed object-state linking.
-	 * If either parameter is null, a wrapped UnsupportedOperationException is thrown.
-	 * @param log
-	 * @param creator
-	 * @param contents
-	 * @return The newly created log entry.
-	 */
-	@Transactional
-	public LogEntry createNewLogEntry(final Log log, final User creator, String contents){
-		if (log == null || creator == null)
-			throw new RenderingSafeException(new UnsupportedOperationException("Sorry, can't create log entries without a valid log and creator"));
-		LogEntry le = new LogEntry(creator, contents, log);		
-//		le.updateTimeStamps();
-		return( logEntryDao.save(le));
-	}
-	
-	@Transactional
-	public void deleteLogEntry(LogEntry logEntry){
-		logEntry = logEntryDao.reLoad(logEntry);
-		logEntry.setDeleted(true);
-		logEntryDao.save(logEntry);
-	}
-	
-	/**
-	 * Queries for all the log entries in a log
-	 * @param log
-	 * @return
-	 */
-	@Transactional(readOnly=true)
-	public List<LogEntry> retrieveLogEntries(final Log log){
-//		return log.getLogEntryList();
-		return logEntryDao.findAllNonDeletedByLog(log);
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.html b/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.html
deleted file mode 100644
index 17cbfdabc6..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html
-	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<wicket:remove>
-	<link rel="stylesheet" type="text/css" href="../../../../../../webapp/css/scipro.css"/>
-	<link rel="stylesheet" type="text/css" href="../../../../../../webapp/css/blueprint/screen.css"/>
-</wicket:remove>
-<body>
-	<wicket:extend>
-		<div wicket:id="logPanel"></div>
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.java b/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.java
deleted file mode 100644
index 92bfafed5e..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/pages/ProjectLogPage.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package se.su.dsv.scipro.log.pages;
-
-import org.apache.wicket.PageParameters;
-
-import se.su.dsv.scipro.exceptions.RenderingSafeException;
-import se.su.dsv.scipro.log.panels.LogPanel;
-import se.su.dsv.scipro.project.pages.ProjectPage;
-import se.su.dsv.scipro.security.auth.Authorization;
-import se.su.dsv.scipro.security.auth.roles.Roles;
-
-@Authorization(authorizedRoles={Roles.STUDENT}) 
-public class ProjectLogPage extends ProjectPage{
-	
-//	@SpringBean
-//	private LogDao logDao;
-//	@SpringBean
-//	private LogEntryDao logEntryDao;
-	
-	public ProjectLogPage(PageParameters pp) {
-		
-		super(pp);
-		if(getActiveProject() == null || getUser() == null)
-			throw new RenderingSafeException(new IllegalStateException("No valid project or user"));
-		add(new LogPanel("logPanel",getActiveProject(),getUser()));
-		
-//		/*
-//		 * Ladda log och logEntries
-//		 */
-//		super(pp);
-//		
-//		Project project = SciProSession.get().getActiveProject();
-//		
-//		Log log = null;
-//		if (project.getLog()==null){
-//			//Om projektet ännu inte har en logg måste en skapas och sparas.
-//			log = new Log(project);
-//			log = logDao.save(log);
-//		}else{
-//			log = project.getLog();
-//		}//annars tar vi projektets redan existerande logg
-//		
-//		List<LogEntry> logEntryList = logEntryDao.findAllNonDeletedByLog(log); //denna metod hämtar denna logs ickedeletade inlägg
-//		
-//		WriteLogEntryPanel wlep = new WriteLogEntryPanel("wlep", logEntryList);
-//		add(wlep);
-//		LogEntriesPanel lep = new LogEntriesPanel("lep", logEntryList, true);
-//		add(lep);
-	}
-}
-
-
-
diff --git a/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.html b/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.html
deleted file mode 100644
index b007a5810e..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html
-	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<wicket:remove>
-	<link rel="stylesheet" type="text/css"
-		href="../../../../../../webapp/css/scipro.css" />
-	<link rel="stylesheet" type="text/css"
-		href="../../../../../../webapp/css/blueprint/screen.css" />
-</wicket:remove>
-<body>
-	<wicket:extend>
-		<div wicket:id="logPanel"></div>
-	</wicket:extend>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.java b/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.java
deleted file mode 100644
index a8b8e18e05..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/pages/SupervisorLogPage.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package se.su.dsv.scipro.log.pages;
-
-import java.util.List;
-
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.SciProSession;
-import se.su.dsv.scipro.activityplan.panels.SupervisorActivityPlanPanel;
-import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightSupervisorMyProjects;
-import se.su.dsv.scipro.data.dao.interfaces.LogEntryDao;
-import se.su.dsv.scipro.data.dataobjects.LogEntry;
-import se.su.dsv.scipro.exceptions.RenderingSafeException;
-import se.su.dsv.scipro.log.panels.LogPanel;
-import se.su.dsv.scipro.log.panels.SupervisorLogPanel;
-import se.su.dsv.scipro.project.panels.LogEntriesPanel;
-import se.su.dsv.scipro.security.auth.Authorization;
-import se.su.dsv.scipro.security.auth.roles.Roles;
-import se.su.dsv.scipro.supervisor.pages.AbstractSupervisorProjectDetailsPage;
-
-/**
- * 
- * @author fred-fri@dsv.su.se
- *
- * Displays log entries to the supervisor.
- */
-@Authorization(authorizedRoles={Roles.EMPLOYEE}) 
-public class SupervisorLogPage extends AbstractSupervisorProjectDetailsPage implements MenuHighlightSupervisorMyProjects {
-	
-//	@SpringBean
-//	private LogEntryDao logEntryDao;
-	
-	/**
-	 * Default constructor. If the project or log is null
-	 * the constructor handles it and displays the
-	 * appropriate error message to the user.
-	 * @param pp
-	 */
-	public SupervisorLogPage(PageParameters pp) {
-		super(pp);
-		
-		if(projectModel.getObject() == null)
-			throw new RenderingSafeException(new IllegalStateException("No valid project or user"));
-//		add(new LogPanel("logPanel", projectModel.getObject(),SciProSession.get().getUser()));
-		add(new SupervisorLogPanel("logPanel", projectModel.getObject(),SciProSession.get().getUser()));
-		
-//		final Label noLogLabel = new Label("lep", "No log entries yet.");
-//		final Label noProjectLabel = new Label("lep", "No project selected.");
-//		final List<LogEntry> logEntryList = logEntryDao.findAllNonDeletedByLog(projectModel.getObject().getLog());
-//		final LogEntriesPanel lep = new LogEntriesPanel("lep", logEntryList, false);
-//		if (projectModel.getObject()==null){
-//			add(noProjectLabel);
-//		} else if (projectModel.getObject().getLog()==null || logEntryList.size() == 0){
-//			add(noLogLabel);
-//		} else {
-//			add(lep);
-//		}
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.html b/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.html
deleted file mode 100644
index 94d7d0a959..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html
-	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-	<wicket:panel>
-		<div class="span-22" wicket:id="formContainer">
-			<div class="span-10">
-			<form wicket:id="logEntryForm">
-				<div>
-					<textarea wicket:id="contents">This is a comment</textarea>
-				</div>
-				<div>
-<!-- 					<input type="submit" value="Submit" id="formsubmit" /> -->
-					<input wicket:id="saveButton" type="submit" value="Post note" class="append-bottom"/>
-				</div>
-			</form>
-		</div>
-		<div class="span-10 last">
-			<div class="append-bottom"></div>
-			<div class="info-box rounded-box last">
-				<p>What is this?</p>
-				<div>
-					Use notes to jot down stuff related to the project, or anything	really. <b>Remember!</b> The notes are <b>NOT</b> private! Admins and all the people included in the project, such as other students, supervisors, reviewers etc can read them too.  
-				</div>
-
-			</div>
-		</div>
-		</div>
-		
-		<div wicket:id="logEntryListContainer" class="span-22">
-			<table>
-				<tbody>
-					<tr wicket:id="logEntryDataView">
-						<td>
-
-							<div class="rounded-box">
-								<div class="box-title rounded">
-									<span wicket:id="creator">1/1/2004</span> <span> on </span> <span
-										wicket:id="dateCreated">1/1/2004</span>
-									<!-- 											<span><img wicket:id="deleteIcon" class="right-corner-resource" /> </span> -->
-									<span><a href="#" class="right-corner-resource"
-										wicket:id="deleteLink"> <img class="round-box-icon"
-											wicket:id="deleteIcon" alt="Delete" title="Delete" />
-									</a></span>
-
-								</div>
-
-								<span wicket:id="contents">Comment text goes here.</span>
-							</div>
-						</td>
-					</tr>
-				</tbody>
-			</table>
-			<div wicket:id="emptyLabel"></div>
-			<div wicket:id="navigator"></div>
-		</div>
-	<wicket:child />
-	</wicket:panel>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.java b/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.java
deleted file mode 100644
index 215009e165..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/panels/LogPanel.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package se.su.dsv.scipro.log.panels;
-
-import java.util.Collections;
-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;
-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.TextArea;
-import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
-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.markup.repeater.data.ListDataProvider;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-import se.su.dsv.scipro.data.dataobjects.DomainObject;
-import se.su.dsv.scipro.data.dataobjects.LogEntry;
-import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.data.dataobjects.User;
-import se.su.dsv.scipro.icons.ImageObject;
-import se.su.dsv.scipro.log.facade.LogFacade;
-import se.su.dsv.scipro.util.DateFormatter;
-import se.su.dsv.scipro.util.JavascriptEventConfirmation;
-
-/**
- * Generic panel with artifacts for entering and viewing log entries. Uses facade helper.
- * Has a boolean method (isAuthor) that controls whether entering new entries is allowed
- * (or rather, whether the artifacts for making new entries are visible). In this class 
- * it is set to true. For supervisors, use the extended version of this class in which
- * that boolean method is overridden and set to false.
- *  
- * @author fred
- *
- */
-public class LogPanel extends Panel{
-
-	private static final long serialVersionUID = 1L;
-
-	@SpringBean
-	private LogFacade logFacade; //facade class takes care of persistence etc
-
-	private Project project;
-	private User user;
-
-	private List<LogEntry> logEntryList; //list with the logs log entries
-	private WebMarkupContainer logEntryListContainer; //container for the entries
-	
-	private Label emptyLabel;
-	private PagingNavigator pagingNavigator;
-
-	//here comes the methods to be overriden by subclasses
-	protected boolean isAuthor() {
-		return true;
-	}
-
-	public LogPanel(final String id, final Project project, final User user) {
-		super(id);
-		this.project = project;
-		this.user = user;
-		
-		dataViewInit();
-		formInit();
-	}
-	
-	private void formInit(){
-		WebMarkupContainer formContainer = new WebMarkupContainer("formContainer"); //container for the form
-		add(formContainer);
-//		formContainer.add(new LogEntryForm("logEntryForm"));	
-		formContainer.add(new CommentForm("logEntryForm"));
-		formContainer.setVisible(isAuthor()); //only visible to authors
-	}
-	
-	private void dataViewInit(){
-		logEntryList = logFacade.retrieveLogEntries(logFacade.retrieveLog(project));//set the list to... the list!
-		Collections.sort(logEntryList); //sort the list
-
-		logEntryListContainer = new WebMarkupContainer("logEntryListContainer"); //instantiate the container 
-		logEntryListContainer.setOutputMarkupId(true); //make it ajax targetable
-
-		DataView<LogEntry> dataView = new DataView<LogEntry>("logEntryDataView", new ListDataProvider<LogEntry>(logEntryList)) { //dataview using the list
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void populateItem(final Item<LogEntry> item) {
-				final LogEntry logEntry = item.getModelObject();
-
-				item.add(new Label("contents", logEntry.getContents())); //show contents
-				item.add(new Label("creator", logEntry.getCreator().toString()));//show creator/author
-				item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("dateCreated",((DomainObject) item.getModelObject()).getDateCreated()));//and date created
-
-				AjaxLink<Void> deleteLink = new AjaxLink<Void>("deleteLink"){ //deletelink
-					private static final long serialVersionUID = 1L;
-					@Override
-					public void onClick(AjaxRequestTarget target) {
-						logFacade.deleteLogEntry(logEntry); //set lazy deleted
-						logEntryList.remove(logEntry); //remove it from the list that the dataview uses
-						target.addComponent(logEntryListContainer); //target the container containing the dataview
-						
-						emptyLabel.setVisible(logEntryList.isEmpty());
-						target.addComponent(emptyLabel);
-						pagingNavigator.setVisible(!logEntryList.isEmpty());
-						target.addComponent(pagingNavigator);
-						
-					}
-					@Override
-					public boolean isVisible(){
-						return (user.equals(logEntry.getCreator()));
-					}
-				};
-				deleteLink.add(new JavascriptEventConfirmation("onclick", "Are you sure you want to delete this note?"));
-				deleteLink.add(new ImageObject("deleteIcon", ImageObject.TWENTYFOUR + ImageObject.DELETE));
-				item.add(deleteLink);
-			}
-		};
-		dataView.setItemsPerPage(10);
-		logEntryListContainer.add(dataView);
-		pagingNavigator = new PagingNavigator("navigator", dataView);
-		pagingNavigator.setVisible(!logEntryList.isEmpty());
-		pagingNavigator.setOutputMarkupId(true);
-		logEntryListContainer.add(pagingNavigator);
-		
-		add(logEntryListContainer);
-		
-		emptyLabel = new Label("emptyLabel", "No notes to show.");
-		emptyLabel.setVisible(logEntryList.isEmpty());
-		emptyLabel.setOutputMarkupId(true);
-		logEntryListContainer.add(emptyLabel);
-	}
-	
-	public class CommentForm extends Form{
-		
-		private static final long serialVersionUID = 1L;
-		private transient String text; //no need to serialize this
-		
-		public CommentForm(String id) {
-			super(id);
-			
-			final TextArea<String> contents = new TextArea<String>("contents", new PropertyModel<String>(CommentForm.this, "text")); //textArea for user to enter the log entry
-//			contents.setType(String.class); this is the default
-			contents.setOutputMarkupId(true);
-			add(contents);
-			
-			add(new AjaxButton("saveButton") {
-				private static final long serialVersionUID = 1L;
-				@Override
-				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					LogEntry le = logFacade.createNewLogEntry(logFacade.retrieveLog(project), user, text); //create the entry
-					logEntryList.add(le); //add the new entry to the local list that the dataview uses
-					Collections.sort(logEntryList); //sort the list
-
-					contents.clearInput(); //clear the text area
-					contents.setModelObject(null); //make sure it "knows" the model has been changed
-					
-					//ajax stuff
-					target.addComponent(logEntryListContainer);
-					target.addComponent(contents);
-					
-					emptyLabel.setVisible(logEntryList.isEmpty());
-					target.addComponent(emptyLabel);
-					pagingNavigator.setVisible(!logEntryList.isEmpty());
-					target.addComponent(pagingNavigator);
-					
-				}
-			});	
-		}
-	}
-}
diff --git a/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.html b/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.html
deleted file mode 100644
index c40b8ce39f..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
-<body>
-<wicket:panel>
-	<wicket:extend>
-	</wicket:extend>
-</wicket:panel>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.java b/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.java
deleted file mode 100644
index e7d212029e..0000000000
--- a/src/main/java/se/su/dsv/scipro/log/panels/SupervisorLogPanel.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package se.su.dsv.scipro.log.panels;
-
-import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.data.dataobjects.User;
-
-public class SupervisorLogPanel extends LogPanel{
-
-	private static final long serialVersionUID = 1L;
-	
-	public SupervisorLogPanel(String id, Project project, User user) {
-		super(id, project, user);
-	}
-
-	@Override
-	protected boolean isAuthor() {
-		return false;
-	}
-
-}
diff --git a/src/main/java/se/su/dsv/scipro/match/GreedyMatchingAlgorithm.java b/src/main/java/se/su/dsv/scipro/match/GreedyMatchingAlgorithm.java
index 8aa6930b03..075c6491cc 100644
--- a/src/main/java/se/su/dsv/scipro/match/GreedyMatchingAlgorithm.java
+++ b/src/main/java/se/su/dsv/scipro/match/GreedyMatchingAlgorithm.java
@@ -39,8 +39,8 @@ public class GreedyMatchingAlgorithm implements MatchingAlgorithm {
             matchProjectIdeas(unmatchedProjectIdeas, supervisorAvailability, pairList);      
             
             if(!pairList.isEmpty()) {
-                Collections.sort(pairList);
                 calculateTotalAvailability(pairList);
+                Collections.sort(pairList);
                 Pair foundPair = pairList.get(0);
                 for(Availability availability : supervisorAvailability) {
                     if(availability.getSupervisor().equals(foundPair.getMatch().getSupervisor()) &&
@@ -98,7 +98,7 @@ public class GreedyMatchingAlgorithm implements MatchingAlgorithm {
      }
 
      /**
-	 * Return the best match, the old one or the new one with supervisor
+	 * Return a new Pair with a calculated score
 	 * @param projectIdea projectIdea
 	 * @param availability  the availability
 	 * @return Pair
@@ -207,7 +207,6 @@ public class GreedyMatchingAlgorithm implements MatchingAlgorithm {
      * is added to Availability#getAvailability (int) for bachelor for each supervisor, this total availability is considered when
      * matching project ideas to supervisors
      * @param pairList all the matches that is produced, represented as instances of the class Pair
-     * @return
      */
     private void calculateTotalAvailability(List<Pair> pairList) {
         for(Pair ourMatch : pairList) {
diff --git a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
index 9b4860b570..1f6914edb7 100644
--- a/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
+++ b/src/main/java/se/su/dsv/scipro/match/dao/jpa/KeywordDaoJPAImp.java
@@ -94,9 +94,9 @@ public class KeywordDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<Keyword> imple
 			public List<Keyword> doInJpa(EntityManager em) throws PersistenceException {
 				TypedQuery<Keyword> query;
 				if(includeLazyDeleted)
-					query = em.createQuery("SELECT x FROM "+domainClassString+" x WHERE x.type = :type", domainClass);
+					query = em.createQuery("SELECT x FROM "+domainClassString+" x WHERE x.type = :type ORDER BY keyword", domainClass);
 				else
-					query = em.createQuery("SELECT x FROM "+domainClassString+" x WHERE x.type = :type AND x.deleted = false", domainClass);
+					query = em.createQuery("SELECT x FROM "+domainClassString+" x WHERE x.type = :type AND x.deleted = false ORDER BY keyword", domainClass);
 				query.setParameter("type", keywordType);
 				query.setHint(QueryHints.HINT_CACHEABLE, "true");
 				return query.getResultList();
diff --git a/src/main/java/se/su/dsv/scipro/match/dao/jpa/MatchDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/match/dao/jpa/MatchDaoJPAImp.java
index d7e693d7c3..2684944ad2 100644
--- a/src/main/java/se/su/dsv/scipro/match/dao/jpa/MatchDaoJPAImp.java
+++ b/src/main/java/se/su/dsv/scipro/match/dao/jpa/MatchDaoJPAImp.java
@@ -79,7 +79,7 @@ public class MatchDaoJPAImp extends AbstractDaoJPAImp<Match> implements
         match = super.save(match);
         ProjectIdea projectIdea = match.getProjectIdea();
         projectIdea.addMatch(match);
-        projectIdeaDao.save(projectIdea);
+        projectIdea = projectIdeaDao.save(projectIdea);
         return match;
     }
 
diff --git a/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesPanel.java b/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesPanel.java
index e337d1a44e..9d0150f918 100644
--- a/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesPanel.java
+++ b/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesPanel.java
@@ -115,7 +115,7 @@ public class PrivateMessagesPanel extends Panel {
                     	Recipient rec2 = recipientDao.reLoad(item.getModelObject());
                         if (rec2.getDateRead() == null) {
                         	rec2.setDateRead(GregorianCalendar.getInstance().getTime());
-                            recipientDao.save(rec2);
+                            rec2 = recipientDao.save(rec2);
                         }
 
                         messageContainer = new WebMarkupContainer("messageContainer");
diff --git a/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesWidget.java b/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesWidget.java
index 4efb1d5deb..5601913aa2 100644
--- a/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesWidget.java
+++ b/src/main/java/se/su/dsv/scipro/message/panels/PrivateMessagesWidget.java
@@ -84,7 +84,7 @@ public class PrivateMessagesWidget extends Panel {
                         recipient = recipientDao.reLoad(item.getModelObject());
                         if (recipient.getDateRead() == null) {
                             recipient.setDateRead(GregorianCalendar.getInstance().getTime());
-                            recipientDao.save(recipient);
+                            recipient = recipientDao.save(recipient);
                         }
                         
                         messageContainer = new WebMarkupContainer("messageContainer");
diff --git a/src/main/java/se/su/dsv/scipro/opponent/panels/EditFinalSeminarFormPanel.java b/src/main/java/se/su/dsv/scipro/opponent/panels/EditFinalSeminarFormPanel.java
index ae5ebd39a0..1142833385 100644
--- a/src/main/java/se/su/dsv/scipro/opponent/panels/EditFinalSeminarFormPanel.java
+++ b/src/main/java/se/su/dsv/scipro/opponent/panels/EditFinalSeminarFormPanel.java
@@ -384,7 +384,7 @@ public class EditFinalSeminarFormPanel extends Panel {
 									.getActiveParticipations();
 							if (!allList.contains(al) && !al.isPreDeleted()) {
 								al.setFinalSeminar(editSeminar);
-								finalSeminarActiveParticipationDao.save(al);
+								al = finalSeminarActiveParticipationDao.save(al);
 
 							} else if (al.isPreDeleted() && allList.contains(al)) {
 								finalSeminarActiveParticipationDao
diff --git a/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarContainerPanel.java b/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarContainerPanel.java
index adcd3edf62..9fecde9e47 100644
--- a/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarContainerPanel.java
+++ b/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarContainerPanel.java
@@ -7,11 +7,12 @@ 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.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import se.su.dsv.scipro.data.dao.interfaces.FinalSeminarDao;
-import se.su.dsv.scipro.data.dataobjects.Project;
 import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
+import se.su.dsv.scipro.data.dataobjects.Project;
 
 public class ProjectFinalSeminarContainerPanel extends Panel {
 	
@@ -38,7 +39,7 @@ public class ProjectFinalSeminarContainerPanel extends Panel {
 
 			@Override
 			protected void populateItem(ListItem<FinalSeminar> item) {
-				item.add(new ProjectFinalSeminarPanel("seminarPanel", item.getModelObject(), isSupervisorView));
+				item.add(new ProjectFinalSeminarPanel("seminarPanel", new Model<FinalSeminar>(item.getModelObject()), isSupervisorView));
 			}
 			
 		});
diff --git a/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarPanel.java b/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarPanel.java
index 90190c144e..55d97abd66 100644
--- a/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarPanel.java
+++ b/src/main/java/se/su/dsv/scipro/opponent/panels/ProjectFinalSeminarPanel.java
@@ -46,7 +46,11 @@ import se.su.dsv.scipro.repository.FileRepository;
 import se.su.dsv.scipro.repository.SortOrder;
 import se.su.dsv.scipro.repository.components.FileDownloadLink;
 import se.su.dsv.scipro.repository.components.FileOpenLink;
-import se.su.dsv.scipro.util.*;
+import se.su.dsv.scipro.util.CollectionFilterUtil;
+import se.su.dsv.scipro.util.DateFormatter;
+import se.su.dsv.scipro.util.JavascriptEventConfirmation;
+import se.su.dsv.scipro.util.Predicate;
+import se.su.dsv.scipro.util.TurnitinComponent;
 
 public class ProjectFinalSeminarPanel extends Panel {
 
@@ -70,14 +74,14 @@ public class ProjectFinalSeminarPanel extends Panel {
 	private Dialog editSeminarDialog;
 	private EditSeminarForm editSeminarForm;
 
-	public ProjectFinalSeminarPanel(final String id, final FinalSeminar seminar,
+	public ProjectFinalSeminarPanel(final String id, final Model<FinalSeminar> seminarModel,
 			final boolean isSupervisorView) {
 		super(id);
 
 		setVersioned(false);
 
 		EditForm editForm;
-		add(editForm = new EditForm("editForm", seminar));
+		add(editForm = new EditForm("editForm", seminarModel));
 		
 		editSeminarDialogContainer = new WebMarkupContainer("dialogContainer");
 		editSeminarDialog = new Dialog("dialog");
@@ -89,10 +93,10 @@ public class ProjectFinalSeminarPanel extends Panel {
 		editSeminarDialogContainer.setOutputMarkupId(true);
 		editSeminarDialogContainer.add(editSeminarForm = new EditSeminarForm("editSeminarForm"));
 		editSeminarForm.setOutputMarkupId(true);
-		add(new Label("seminarLocation", seminar.getRoom()));
-		add(new Label("projectClass", seminar.getProject().getProjectClass().getName()));
-		add(new Label("seminarLanguage", seminar.getPresentationLanguage().toString()));
-		add(new Label("thesisLanguage", seminar.getReportLanguage().toString()));
+		add(new Label("seminarLocation", seminarModel.getObject().getRoom()));
+		add(new Label("projectClass", seminarModel.getObject().getProject().getProjectClass().getName()));
+		add(new Label("seminarLanguage", seminarModel.getObject().getPresentationLanguage().toString()));
+		add(new Label("thesisLanguage", seminarModel.getObject().getReportLanguage().toString()));
 
 		if (!isSupervisorView) {
 			editForm.setVisible(false);
@@ -104,10 +108,10 @@ public class ProjectFinalSeminarPanel extends Panel {
 				.isFinalSeminarThesisMustBeAPDF() && !isSupervisorView);
 		add(pdfLabel);
 		int totalAttendees = 1;
-		totalAttendees += seminar.getActiveParticipations().size();
-		totalAttendees += seminar.getProject().getProjectFollowers().size();
-		totalAttendees += seminar.getProject().getProjectParticipants().size();
-		totalAttendees += seminar.getOppositions().size();
+		totalAttendees += seminarModel.getObject().getActiveParticipations().size();
+		totalAttendees += seminarModel.getObject().getProject().getProjectFollowers().size();
+		totalAttendees += seminarModel.getObject().getProject().getProjectParticipants().size();
+		totalAttendees += seminarModel.getObject().getOppositions().size();
 
 		final Dialog attendeesDialog = new Dialog("attendeesDialog");
 		attendeesDialog.setModal(true);
@@ -121,7 +125,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 		attendeesDialog.add(attendeesDialogContainer);
 		add(attendeesDialog);
 
-		add(new FinalSeminarDetailsPanel("finalSeminarDetailsPanel", seminar, false));
+		add(new FinalSeminarDetailsPanel("finalSeminarDetailsPanel", seminarModel.getObject(), false));
 
 		final AjaxLink<Void> totalAttendeesLink = new AjaxLink<Void>("totalAttendeesLink") {
 			private static final long serialVersionUID = 1L;
@@ -129,7 +133,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 			@Override
 			public void onClick(AjaxRequestTarget target) {
 				attendeesDialogContainer.replace(new FinalSeminarDetailsPanel(
-						"attendeesDialogContent", seminar, false));
+						"attendeesDialogContent", seminarModel.getObject(), false));
 				target.addComponent(attendeesDialogContainer);
 				attendeesDialog.open(target);
 			}
@@ -140,14 +144,14 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 		add(new Label("totalAttendees", String.valueOf(totalAttendees)));
 
-		add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("seminarDate", seminar.getStartDate()));
+		add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("seminarDate", seminarModel.getObject().getStartDate()));
 
-		add(new DateFormatter(DateFormatter.FORMAT.REDUCED).createFormattedDateLabel("seminarEndDate", seminar.getEndDate()));
+		add(new DateFormatter(DateFormatter.FORMAT.REDUCED).createFormattedDateLabel("seminarEndDate", seminarModel.getObject().getEndDate()));
 		/*
 		 * Deadline -7 days removed, deadline is now the start-date of the
 		 * seminar
 		 */
-		finalSubmissionDate = new DateTime(seminar.getStartDate()).minusDays(7).toDate();
+		finalSubmissionDate = new DateTime(seminarModel.getObject().getStartDate()).minusDays(7).toDate();
 
 		add(new Label("seminarReportTitle", new Model<String>() {
 			private static final long serialVersionUID = 1L;
@@ -155,7 +159,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 			@Override
 			public String getObject() {
 
-				return seminar.getDocument() == null ? "" : seminar.getDocument().getName();
+				return seminarModel.getObject().getDocument() == null ? "" : seminarModel.getObject().getDocument().getName();
 			}
 		}));
 
@@ -164,14 +168,14 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public boolean isVisible() {
-				return seminar.getDocument() != null;
+				return seminarModel.getObject().getDocument() != null;
 			}
 		};
 
-		uploadInfoContainer.add(new DateFormatter().createFormattedDateLabel("uploadDate", seminar.getDocumentUploadDate()));
+		uploadInfoContainer.add(new DateFormatter().createFormattedDateLabel("uploadDate", seminarModel.getObject().getDocumentUploadDate()));
 
-		if (seminar.getDocumentUploader() != null) {
-			uploadInfoContainer.add(seminar.getDocumentUploader().getDisplayComponent("uploader"));
+		if (seminarModel.getObject().getDocumentUploader() != null) {
+			uploadInfoContainer.add(seminarModel.getObject().getDocumentUploader().getDisplayComponent("uploader"));
 		} else {
 			uploadInfoContainer.add(new EmptyPanel("uploader"));
 		}
@@ -188,10 +192,11 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public void onClick() {
-				String url = turnitinComponent.returnReport(seminar.getTurnitinId());
+				String url = turnitinComponent.returnReport(seminarModel.getObject().getTurnitinId());
 				if (url != null) {
-					seminar.setCheckedForPlagirism(true);
-					finalSeminarDao.save(seminar);
+					seminarModel.getObject().setCheckedForPlagirism(true);
+					seminarModel.setObject(seminarModel.getObject());
+//					seminar = finalSeminarDao.save(seminar);
 				}
 				setResponsePage(new TurnitinPopupPage(url));
 			}
@@ -199,14 +204,14 @@ public class ProjectFinalSeminarPanel extends Panel {
 		turnItLink.setPopupSettings(new PopupSettings(PopupSettings.SCROLLBARS));
 		turnItLink.setOutputMarkupPlaceholderTag(true);
 		turnItLink.setVisible(false);
-		if (seminar.getTurnitinId() != null) {
-			if (seminar.isCheckedForPlagirism())
+		if (seminarModel.getObject().getTurnitinId() != null) {
+			if (seminarModel.getObject().isCheckedForPlagirism())
 				plagiarismLabel.setDefaultModelObject("Yes");
 			turnItLink.setVisible(isSupervisorView);
 		}
 
-		uploadInfoContainer.add(new FileDownloadLink("download", seminar.getDocument()).add(new ImageObject("downloadIcon", ImageObject.SIXTEEN + ImageObject.DOCUMENT_DOWN)));
-		uploadInfoContainer.add(new FileOpenLink("open", seminar.getDocument()).add(new ImageObject("openIcon", ImageObject.SIXTEEN + ImageObject.DOCUMENT_VIEW)));
+		uploadInfoContainer.add(new FileDownloadLink("download", seminarModel.getObject().getDocument()).add(new ImageObject("downloadIcon", ImageObject.SIXTEEN + ImageObject.DOCUMENT_DOWN)));
+		uploadInfoContainer.add(new FileOpenLink("open", seminarModel.getObject().getDocument()).add(new ImageObject("openIcon", ImageObject.SIXTEEN + ImageObject.DOCUMENT_VIEW)));
 		uploadInfoContainer.add(plagiarismLabel);
 		uploadInfoContainer.add(turnItLink);
 		uploadInfoContainer.add(checkPlagiarismLabel);
@@ -217,14 +222,14 @@ public class ProjectFinalSeminarPanel extends Panel {
 			@Override
 			public boolean isVisible() {
 
-				return !isSupervisorView && seminar.getActiveParticipations().isEmpty()
-						&& seminar.getOppositions().isEmpty() && seminar.getTurnitinId() == null;
+				return !isSupervisorView && seminarModel.getObject().getActiveParticipations().isEmpty()
+						&& seminarModel.getObject().getOppositions().isEmpty() && seminarModel.getObject().getTurnitinId() == null;
 			}
 
 			@Override
 			public void onSubmit() {
 				try {
-					seminarUploadController.deleteSeminarReport(seminar);
+					seminarUploadController.deleteSeminarReport(seminarModel.getObject());
 					setResponsePage(ProjectStartPage.class);
 				} catch (RuntimeException e) {
 					error("Cannot delete report, opponents or active participants have signed up already");
@@ -245,11 +250,11 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public boolean isVisible() {
-				return seminar.getOppositions().size() == 0;
+				return seminarModel.getObject().getOppositions().size() == 0;
 			}
 		});
 
-		add(new ListView<FinalSeminarOpposition>("opponentList", seminar.getOppositions()) {
+		add(new ListView<FinalSeminarOpposition>("opponentList", seminarModel.getObject().getOppositions()) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -284,12 +289,12 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public boolean isVisible() {
-				return seminar.getActiveParticipations().size() == 0;
+				return seminarModel.getObject().getActiveParticipations().size() == 0;
 			}
 		});
 
 		add(new ListView<FinalSeminarActiveParticipation>("activeParticipantsList",
-				seminar.getActiveParticipations()) {
+				seminarModel.getObject().getActiveParticipations()) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -301,7 +306,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 		});
 
-		add(new SeminarDocumentUploadForm(seminar) {
+		add(new SeminarDocumentUploadForm(seminarModel.getObject()) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -310,7 +315,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 				 * Show when: - no report uploaded && finalSubmissionDate has
 				 * not passed && it's not a supervisor view
 				 */
-				return seminar.getDocument() == null
+				return seminarModel.getObject().getDocument() == null
 				/*
 				 * Still show the final submission deadline as 7 days prior to
 				 * seminar but allow upload until seminar takes place.
@@ -325,7 +330,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public boolean isVisible() {
-				return finalSubmissionDate.before(new Date()) && seminar.getDocument() == null;
+				return finalSubmissionDate.before(new Date()) && seminarModel.getObject().getDocument() == null;
 			}
 		};
 
@@ -341,7 +346,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 			@Override
 			public boolean isVisible() {
-				return seminar.getDocument() == null && finalSubmissionDate.after(new Date());
+				return seminarModel.getObject().getDocument() == null && finalSubmissionDate.after(new Date());
 			}
 		};
 
@@ -351,8 +356,8 @@ public class ProjectFinalSeminarPanel extends Panel {
 		add(uploadDeadlineInfoContainer);
 	}
 
-	public ProjectFinalSeminarPanel(final String id, final FinalSeminar seminar) {
-		this(id, seminar, false);
+	public ProjectFinalSeminarPanel(final String id, final Model<FinalSeminar> seminarModel) {
+		this(id, seminarModel, false);
 	}
 
 	private class SeminarDocumentUploadForm extends AbstractUploadForm {
@@ -411,7 +416,7 @@ public class ProjectFinalSeminarPanel extends Panel {
          */
 		private static final long serialVersionUID = 5882957818616996808L;
 
-		public EditForm(String name, final FinalSeminar seminar) {
+		public EditForm(String name, final Model<FinalSeminar> seminarModel) {
 			super(name);
 
 			add(new AjaxButton("edit", new Model<String>("Edit Final Seminar")) {
@@ -420,7 +425,7 @@ public class ProjectFinalSeminarPanel extends Panel {
 
 				@Override
 				protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-					FinalSeminar seminar2 = finalSeminarDao.reLoad(seminar);
+					FinalSeminar seminar2 = finalSeminarDao.reLoad(seminarModel.getObject());
 					editSeminarForm.removeAll();
 					editSeminarForm.add(new EditFinalSeminarFormPanel("editSeminarDetails", seminar2, false));
 					target.addComponent(editSeminarForm);
diff --git a/src/main/java/se/su/dsv/scipro/peer/data/dao/controllers/PeerPortalControllerImpl.java b/src/main/java/se/su/dsv/scipro/peer/data/dao/controllers/PeerPortalControllerImpl.java
index fa8d0c1657..61d32628d8 100644
--- a/src/main/java/se/su/dsv/scipro/peer/data/dao/controllers/PeerPortalControllerImpl.java
+++ b/src/main/java/se/su/dsv/scipro/peer/data/dao/controllers/PeerPortalControllerImpl.java
@@ -246,7 +246,7 @@ public class PeerPortalControllerImpl implements PeerPortalController {
 			if (request.getStatus() != RequestStatus.WAITING) {
 				// reset status
 				request.setStatus(RequestStatus.WAITING);
-				peerRequestDao.save(request);
+				request = peerRequestDao.save(request);
 			}
 			throw e;
 		}
diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java
index 33c21a9f7f..0f973652af 100644
--- a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java
+++ b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java
@@ -93,7 +93,7 @@ public class PeerRequestListPanel extends Panel {
 						}else {
 							// Request has aborted review, set canceled in order to keep statistics
 							req.setStatus(RequestStatus.CANCELED);
-							peerRequestDao.save(req);
+							req = peerRequestDao.save(req);
 							info("The request was canceled");
 						}
 						target.addComponent(PeerRequestListPanel.this);
diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/StudentPeerInfoRequestsPanel.java b/src/main/java/se/su/dsv/scipro/peer/panels/StudentPeerInfoRequestsPanel.java
index a9bd0099d8..dbac3090e1 100644
--- a/src/main/java/se/su/dsv/scipro/peer/panels/StudentPeerInfoRequestsPanel.java
+++ b/src/main/java/se/su/dsv/scipro/peer/panels/StudentPeerInfoRequestsPanel.java
@@ -171,7 +171,7 @@ public abstract class StudentPeerInfoRequestsPanel extends Panel {
 							// Request has aborted review, set canceled in order to keep statistics
 							info("The request was canceled");
 							reloadedRequest.setStatus(RequestStatus.CANCELED);
-							peerRequestDao.save(reloadedRequest);
+							reloadedRequest = peerRequestDao.save(reloadedRequest);
 						}
 						target.addComponent(StudentPeerInfoRequestsPanel.this);
 					}
diff --git a/src/main/java/se/su/dsv/scipro/peer/workerthreads/ExpiredRequestWorker.java b/src/main/java/se/su/dsv/scipro/peer/workerthreads/ExpiredRequestWorker.java
index 53a46fae77..d8a9877a78 100644
--- a/src/main/java/se/su/dsv/scipro/peer/workerthreads/ExpiredRequestWorker.java
+++ b/src/main/java/se/su/dsv/scipro/peer/workerthreads/ExpiredRequestWorker.java
@@ -40,7 +40,7 @@ public class ExpiredRequestWorker extends AbstractWorker {
 					} else {
 						// Request has aborted review, set canceled in order to keep statistics
 						request.setStatus(RequestStatus.CANCELED);
-						peerRequestDao.save(request);
+						request = peerRequestDao.save(request);
 					}
 					
 				}
diff --git a/src/main/java/se/su/dsv/scipro/project/pages/ProjectChecklistPage.java b/src/main/java/se/su/dsv/scipro/project/pages/ProjectChecklistPage.java
index a418c60c7c..5fbe2e05c1 100644
--- a/src/main/java/se/su/dsv/scipro/project/pages/ProjectChecklistPage.java
+++ b/src/main/java/se/su/dsv/scipro/project/pages/ProjectChecklistPage.java
@@ -1,17 +1,11 @@
 package se.su.dsv.scipro.project.pages;
 
-import java.util.List;
-
 import org.apache.wicket.PageParameters;
-import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
 
 import se.su.dsv.scipro.SciProSession;
-import se.su.dsv.scipro.checklists.panels.CheckListModel;
 import se.su.dsv.scipro.checklists.panels.ListCheckListPanel;
-import se.su.dsv.scipro.data.dataobjects.CheckList;
-import se.su.dsv.scipro.data.dataobjects.Member;
 import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.data.dataobjects.User;
 import se.su.dsv.scipro.data.enums.CheckListRole;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
@@ -28,7 +22,7 @@ public class ProjectChecklistPage extends ProjectPage {
 		super(pp);
 		
 		pp.put(Project.PP_PROJECT_ID, SciProSession.get().getActiveProject().getId());
-		add(new ListCheckListPanel("listCheckListPanel", CheckListRole.AUTHOR,getActiveProject()));
+		add(new ListCheckListPanel("listCheckListPanel", CheckListRole.AUTHOR, new Model<Project>(getActiveProject())));
 		//add(new TrafficLightPanel("trafficLightPanel"));
 		//add(new CreateCheckListTemplatePanel("createCheckList"));
 	}
diff --git a/src/main/java/se/su/dsv/scipro/project/pages/ProjectPartnerPage.java b/src/main/java/se/su/dsv/scipro/project/pages/ProjectPartnerPage.java
index b11f6f2490..1677452aa2 100644
--- a/src/main/java/se/su/dsv/scipro/project/pages/ProjectPartnerPage.java
+++ b/src/main/java/se/su/dsv/scipro/project/pages/ProjectPartnerPage.java
@@ -96,7 +96,7 @@ public class ProjectPartnerPage extends ProjectPage {
 				ProjectPartner ex = (ProjectPartner) partnerForm.getModelObject();
 				ex.setProjectClass(selected);
 //				partnerForm.setDefaultModelObject(projectPartnerDao.save(ex));
-				projectPartnerDao.save(ex);
+				ex = projectPartnerDao.save(ex);
 				info("OK");
 				
 				infoText.clearInput(); //clear the text area
diff --git a/src/main/java/se/su/dsv/scipro/project/panels/LogEntriesPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/LogEntriesPanel.java
index f39fa4a76c..28fcf4509f 100644
--- a/src/main/java/se/su/dsv/scipro/project/panels/LogEntriesPanel.java
+++ b/src/main/java/se/su/dsv/scipro/project/panels/LogEntriesPanel.java
@@ -61,7 +61,7 @@ public class LogEntriesPanel extends Panel{
 					public void onClick(AjaxRequestTarget target) {
 						LogEntry toBeRemoved = logEntryDao.reLoad(logEntry);
 						toBeRemoved.setDeleted(true);
-						logEntryDao.save(toBeRemoved);
+						toBeRemoved = logEntryDao.save(toBeRemoved);
 						logEntryList.remove(toBeRemoved);
 						target.addComponent(logEntryListContainer);
 
diff --git a/src/main/java/se/su/dsv/scipro/project/panels/NotificationsPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/NotificationsPanel.java
index b223e77379..a649b4e936 100644
--- a/src/main/java/se/su/dsv/scipro/project/panels/NotificationsPanel.java
+++ b/src/main/java/se/su/dsv/scipro/project/panels/NotificationsPanel.java
@@ -97,7 +97,7 @@ public class NotificationsPanel extends Panel {
 					public void onClick(AjaxRequestTarget target) {
 						WebNotification notification = item.getModelObject();
 						notification.setReadByUser(true);
-						webNotificationDao.save(notification);
+						notification = webNotificationDao.save(notification);
 						target.addComponent(webMarkupContainer);
 						countOfNotifications = numberOfNotificationsModel.getObject();
 					}
@@ -115,7 +115,7 @@ public class NotificationsPanel extends Panel {
 				for (WebNotification webnotification : webNotificationDao
 						.getWebNotifications(SciProSession.get().getUser())) {
 					webnotification.setReadByUser(true);
-					webNotificationDao.save(webnotification);
+					webnotification = webNotificationDao.save(webnotification);
 				}
 				countOfNotifications = numberOfNotificationsModel.getObject();
 				target.addComponent(webMarkupContainer);
diff --git a/src/main/java/se/su/dsv/scipro/project/panels/ProjectManagementPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/ProjectManagementPanel.java
index 3afb6f9b6d..5daebf3062 100644
--- a/src/main/java/se/su/dsv/scipro/project/panels/ProjectManagementPanel.java
+++ b/src/main/java/se/su/dsv/scipro/project/panels/ProjectManagementPanel.java
@@ -21,6 +21,7 @@ import se.su.dsv.scipro.admin.pages.ProjectManagementPage;
 import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
 import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
 import se.su.dsv.scipro.data.dataobjects.Project;
+import se.su.dsv.scipro.data.facade.ProjectFacade;
 import se.su.dsv.scipro.dataproviders.NewProjectDataProvider;
 import se.su.dsv.scipro.reusable.DatesPanel;
 import se.su.dsv.scipro.reusable.FilterProjectClassPanel;
@@ -29,9 +30,9 @@ import se.su.dsv.scipro.reusable.FilterStringPanel;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 
 public class ProjectManagementPanel extends Panel {
-
+	
 	@SpringBean
-	private ProjectDao projectDao;
+	private ProjectFacade projectFacade;
 
 	private static final long serialVersionUID = 1L;
 
@@ -134,14 +135,12 @@ public class ProjectManagementPanel extends Panel {
                     private static final long serialVersionUID = 1L;
                     @Override
                     public void onClick(AjaxRequestTarget target) {
-                        Project p2 = projectDao.reLoad(p);
-                        projectDao.delete(p2);
+                        projectFacade.deleteProject(p);
                         ajaxRefresh(target);
                     }
 
                 };
                 item.add(deleteLink);
-//>>>>>>> cascade
 				
 			}
 		};
diff --git a/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java
index 3fdfc05e6c..91ddea5138 100644
--- a/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java
+++ b/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java
@@ -12,7 +12,6 @@ import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightChecklist;
 import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightProjectIdeas;
 import se.su.dsv.scipro.conference.pages.ProjectConferencePage;
 import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.log.pages.ProjectLogPage;
 import se.su.dsv.scipro.peer.pages.ProjectPeerPortalPage;
 import se.su.dsv.scipro.project.pages.FinalSeminarProjectListPage;
 import se.su.dsv.scipro.project.pages.NoActiveProjectPage;
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorChecklistPage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorChecklistPage.java
index af3327e002..b3c8d1280b 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorChecklistPage.java
+++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorChecklistPage.java
@@ -1,10 +1,12 @@
 package se.su.dsv.scipro.supervisor.pages;
 
 import org.apache.wicket.PageParameters;
+import org.apache.wicket.model.Model;
 
 import se.su.dsv.scipro.checklists.panels.ListCheckListPanel;
 import se.su.dsv.scipro.checklists.panels.SupervisorAddChecklistPanel;
 import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightSupervisorMyProjects;
+import se.su.dsv.scipro.data.dataobjects.Project;
 import se.su.dsv.scipro.data.enums.CheckListRole;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
@@ -18,7 +20,7 @@ import se.su.dsv.scipro.security.auth.roles.Roles;
 public class SupervisorChecklistPage extends AbstractSupervisorProjectDetailsPage implements MenuHighlightSupervisorMyProjects {
 	public SupervisorChecklistPage(PageParameters pp) {
 		super(pp);
-		add(new ListCheckListPanel("listCheckListPanel", CheckListRole.SUPERVISOR, projectModel.getObject()));
+		add(new ListCheckListPanel("listCheckListPanel", CheckListRole.SUPERVISOR, new Model<Project>(projectModel.getObject())));
 		add(new SupervisorAddChecklistPanel("addChecklistPanel", pp, projectModel.getObject()));
 	}
 
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html
index 7b7d5c0d9a..04ac867d83 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html
@@ -27,8 +27,8 @@
 			<div class="append-bottom">
 				<label>Select what languages you can supervise in: </label>
 				<div wicket:id="languagelistview">
-					<span wicket:id="languagelabel"></span> <input type="checkbox"
-						wicket:id="languagecheckbox" />
+					<input type="checkbox" wicket:id="languagecheckbox" /> 
+					<span wicket:id="languagelabel"></span> 
 				</div>
 			</div>
 			<div>
@@ -38,15 +38,15 @@
 				<div class="span-11">
 					<label>Available</label>
 					<div wicket:id="regularlistview">
-						<span wicket:id="regularlabel"></span> <input type="checkbox"
-							wicket:id="regularcheckbox" />
+						<input type="checkbox" wicket:id="regularcheckbox" /> 
+						<span wicket:id="regularlabel"></span>
 					</div>
 				</div>
 				<div class="span-11 last">
 					<label>Selected</label>
 					<div wicket:id="regularlistview2">
-						<span wicket:id="regularlabel"></span> <input type="checkbox"
-							wicket:id="regularcheckbox" />
+					<input type="checkbox" wicket:id="regularcheckbox" /> 
+						<span wicket:id="regularlabel"></span> 
 					</div>
 				</div>
 			</div>
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorSubTabMenuPanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorSubTabMenuPanel.java
index 618d923905..f5ac18a639 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorSubTabMenuPanel.java
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorSubTabMenuPanel.java
@@ -10,7 +10,6 @@ import se.su.dsv.scipro.activityplan.pages.SupervisorActivityPlanPage;
 import se.su.dsv.scipro.components.AbstractMenuPanel;
 import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightSupervisorChecklist;
 import se.su.dsv.scipro.conference.pages.SupervisorConferencePage;
-import se.su.dsv.scipro.log.pages.SupervisorLogPage;
 import se.su.dsv.scipro.supervisor.pages.AbstractSupervisorProjectDetailsPage;
 import se.su.dsv.scipro.supervisor.pages.SupervisorChecklistPage;
 import se.su.dsv.scipro.supervisor.pages.SupervisorFilePage;
diff --git a/src/main/java/se/su/dsv/scipro/user/facade/UserFacade.java b/src/main/java/se/su/dsv/scipro/user/facade/UserFacade.java
index 45bb723671..1b72f92d92 100644
--- a/src/main/java/se/su/dsv/scipro/user/facade/UserFacade.java
+++ b/src/main/java/se/su/dsv/scipro/user/facade/UserFacade.java
@@ -41,13 +41,13 @@ public class UserFacade {
 		//the line below is why the unit disappears when saving a supervisor profile- the unit is never specified so it saves null over the existing value.		
 //		employee.getKeywords().setKeywords(keywords);
 		employee.getCapabilities().setLanguages(languages);
-		supervisorDao.save(employee);
+		employee = supervisorDao.save(employee);
 		userDao.save(employee.getUser());
 	}
 	@Transactional
-	public void saveUserProfileData(final User user){
+	public void saveUserProfileData(User user){
 		if(user == null)
 			throw new IllegalArgumentException("Null user is not allowed");
-		userDao.save(user);
+		user = userDao.save(user);
 	}
 }
diff --git a/src/main/java/se/su/dsv/scipro/workerthreads/CheckPlagiarismEventWorker.java b/src/main/java/se/su/dsv/scipro/workerthreads/CheckPlagiarismEventWorker.java
index 79e23f42b3..3173619f92 100644
--- a/src/main/java/se/su/dsv/scipro/workerthreads/CheckPlagiarismEventWorker.java
+++ b/src/main/java/se/su/dsv/scipro/workerthreads/CheckPlagiarismEventWorker.java
@@ -52,7 +52,7 @@ public class CheckPlagiarismEventWorker extends AbstractWorker {
 				checkPlagiarismEventDao.delete(cpe);	
 				String turnitinId = turnitinComponent.quickSubmitPaper(fd, fd.getName(), uploader.getFirstName(), uploader.getLastName(), seminar.getProject().getTitle(20));
 				seminar.setTurnitinId(turnitinId);
-				finalSeminarDao.save(seminar);
+				seminar = finalSeminarDao.save(seminar);
 				this.commitTransaction();
 			}
 			
diff --git a/src/test/java/se/su/dsv/scipro/match/TestGreedyMatchingAlgorithm.java b/src/test/java/se/su/dsv/scipro/match/TestGreedyMatchingAlgorithm.java
index 9e66082e26..c4c8279cb3 100644
--- a/src/test/java/se/su/dsv/scipro/match/TestGreedyMatchingAlgorithm.java
+++ b/src/test/java/se/su/dsv/scipro/match/TestGreedyMatchingAlgorithm.java
@@ -166,40 +166,6 @@ public class TestGreedyMatchingAlgorithm {
         masterProjectIdea.getKeywords().getAll().clear();
     }
 
-    @Test
-    @Transactional
-    @Rollback
-    /* a master supervisor can handle master project ideas */
-	public void testMasterSupervisor() {
-        runFirstTest(masterSupervisor, masterProjectClass, masterProjectIdea);
-	}
-
-    @Test
-    @Transactional
-    @Rollback
-    /* a bachelor supervisor can handle bachelor project Ideas */
-    public void testBachelorSupervisor() {
-        runFirstTest(bachelorSupervisor, bachelorProjectClass, bachelorProjectIdea);
-    }
-
-    @Test
-    @Transactional
-    @Rollback
-    /* a masterSupervisor can handle bachelorProjectIdeas */
-    public void testMasterSupervisor_v2() {
-        runFirstTest(masterSupervisor, masterProjectClass, bachelorProjectIdea);
-    }
-    
-    private void runFirstTest(final Employee supervisor, final ProjectClass projectClass, final ProjectIdea projectIdea) {
-        supervisorAvailability.add(new Availability(supervisor, 0L, 1, projectClass));
-        unmatchedProjectIdeas.add(projectIdea);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertFalse(result.matches.size() == 0);
-        assertTrue(result.matches.get(0).getProjectIdea().equals(projectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(supervisor));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
 
     @Test
     @Transactional
@@ -218,7 +184,7 @@ public class TestGreedyMatchingAlgorithm {
     @Rollback
     /* a bachelor supervisor should NOT be able to handle a rejected (bachelor) projectIdea */
     public void testRejectedProjectIdea() {
-        runSecondTest(bachelorSupervisor, bachelorProjectClass, bachelorProjectIdea);
+        testRejectedMatch(bachelorSupervisor, bachelorProjectClass, bachelorProjectIdea);
     }
 
     @Test
@@ -226,10 +192,10 @@ public class TestGreedyMatchingAlgorithm {
     @Rollback
     /* a master supervisor should NOT be able to handle a rejected (bachelor) projectIdea */
     public void testRejectedProjectIdea_v2() {
-        runSecondTest(masterSupervisor, masterProjectClass, bachelorProjectIdea);
+        testRejectedMatch(masterSupervisor, masterProjectClass, bachelorProjectIdea);
     }
      
-    private void runSecondTest(final Employee supervisor, final ProjectClass projectClass, final ProjectIdea projectIdea) {
+    private void testRejectedMatch(final Employee supervisor, final ProjectClass projectClass, final ProjectIdea projectIdea) {
         addRejectedMatch(supervisor, projectIdea);    // adds a rejected match to the projectIdea
         supervisorAvailability.add(new Availability(supervisor, 0L, 1, projectClass));
         unmatchedProjectIdeas.add(projectIdea);
@@ -238,6 +204,8 @@ public class TestGreedyMatchingAlgorithm {
         assertTrue(result.unmatched.size() == 1);
     }
 
+
+    // helper that is used by testRejectedMatch
     private void addRejectedMatch(final Employee supervisor, final ProjectIdea projectIdea) {
         Match rejectedMatch = new Match();
         rejectedMatch.setStatus(Match.Status.REJECTED);
@@ -252,7 +220,7 @@ public class TestGreedyMatchingAlgorithm {
     @Transactional
     @Rollback
     /* a bachelor supervisor can handle a projectIdea which has been rejected by another (bachelor) supervisor, even if the other supervisor has a higher score */
-    public void testRejectByOtherSupervisor()  {
+    public void testShouldSuperviseIdeaRejectedByAnotherSupervisor()  {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         supervisorAvailability.add(new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass));
         supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
@@ -287,28 +255,11 @@ public class TestGreedyMatchingAlgorithm {
 	}
 
 
-	@Test
-    @Transactional
-    @Rollback
-    /* a preferred "bachelor" supervisor should NOT handle a master projectIdea */
-    public void testIncorrectProjectClass() {
-        Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
-        supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(masterSupervisor, 0L, 1, masterProjectClass));
-        masterProjectIdea.setPreferredSupervisor(bachelorSupervisor2);
-        unmatchedProjectIdeas.add(masterProjectIdea);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-        assertTrue(result.matches.get(0).getProjectIdea().equals(masterProjectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(masterSupervisor));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
 	@Test
     @Transactional
     @Rollback
     /* keywords of 16 points should supersede a preferred supervisor of 15 points */
-    public void testHighestScore() {
+    public void testValidKeyWords() {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
         projectIdeaList.add(bachelorProjectIdea);
@@ -328,36 +279,11 @@ public class TestGreedyMatchingAlgorithm {
         assertTrue(result.unmatched.size() == 0);
     }
 
-    @Test
-    @Transactional
-    @Rollback
-    /*  keywords of 6 points should supersede keywords of 3 points */
-    public void testHighestScore_v2() {
-        Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
-        List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
-        projectIdeaList.add(bachelorProjectIdea);
-        List<Employee> supervisorList = new ArrayList<Employee>();
-        supervisorList.add(bachelorSupervisor);
-        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeWord, "test unit", false));   // 3
-        supervisorList.clear();
-        supervisorList.add(bachelorSupervisor2);
-        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeWord, "UML", false));         // 3
-        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeWord, "Design", false));      // 3
-        supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass));
-        unmatchedProjectIdeas.add(bachelorProjectIdea);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-        assertTrue(result.matches.get(0).getProjectIdea().equals(bachelorProjectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(bachelorSupervisor2));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
     @Test
     @Transactional
     @Rollback
     /*  deleted keywords of 6 points should NOT supersede valid keywords of 3 points */
-    public void testHighestScore_v3() {
+    public void testDeletedKeyWords() {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
         projectIdeaList.add(bachelorProjectIdea);
@@ -382,7 +308,7 @@ public class TestGreedyMatchingAlgorithm {
     @Transactional
     @Rollback
     /*  the preferred LANGUAGE of the project idea should determine even when two supervisors NOT have the same score  */
-    public void testPreferredLanguage() {
+    public void testPreferredLanguageDetermines() {
         Set<Language> languageSet = new HashSet<Language>();
         Language language_sv = languageDao.save(new Language("Swedish"));
         languageSet.add(language_sv);
@@ -466,7 +392,7 @@ public class TestGreedyMatchingAlgorithm {
     @Test
     @Transactional
     @Rollback
-    /*  the supervisor with no available "slots" should NOT be chosen even when this supervisor has the highest score */
+    /*  the supervisor with no available "slots" should never be chosen (even when this supervisor has the highest score) */
     public void testNoAvailableSlots() {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
@@ -489,8 +415,8 @@ public class TestGreedyMatchingAlgorithm {
     @Test
     @Transactional
     @Rollback
-    /*  a supervisor with the highest available slot should NOT be chosen when this supervisor has less score */
-    public void testHighestAvailableSlot() {
+    /*  the supervisor with the highest points should be chosen even if there exists a supervisor with more available "slots" */
+    public void testHighestAvailablePoints() {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
         projectIdeaList.add(bachelorProjectIdea);
@@ -511,13 +437,11 @@ public class TestGreedyMatchingAlgorithm {
     @Test
     @Transactional
     @Rollback
-    /*  test that the number Availability#numMatched has increased with one and that the supervisor with highest available slots are chosen  */
+    /*  test that Availability#numMatched has increased with one after a match  */
     public void testNumMatchedHasIncreased() {
         Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
         supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 4, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(bachelorSupervisor, 0L, 1, bachelorProjectClass));
         unmatchedProjectIdeas.add(bachelorProjectIdea);
-
         boolean found = false;
         for(Availability availability : supervisorAvailability) {
             if(availability.getSupervisor().equals(bachelorSupervisor2)) {
@@ -529,7 +453,6 @@ public class TestGreedyMatchingAlgorithm {
         assertTrue(found);
         Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
         assertTrue(result.matches.size() > 0);
-        
         assertTrue(result.matches.get(0).getProjectIdea().equals(bachelorProjectIdea));
         assertTrue(result.matches.get(0).getSupervisor().equals(bachelorSupervisor2));
         found = false;
@@ -545,156 +468,182 @@ public class TestGreedyMatchingAlgorithm {
     }
 
 
+// We now perform 4 tests to verify the correctness of the method GreedyMatchingAlgorithm # Pair # compareTo,
+// which sorts the list of matches, i. e. Pairs according to specific criterias
     @Test
     @Transactional
     @Rollback
-    /*  neither a bachelor or a master supervisor are preferred to handle a bachelor idea when compatibility, keywords, scores etc are equal   */
-    public void testBachelorOrMaster() {
-        Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
-        supervisorAvailability.add(new Availability(masterSupervisor, 0L, 1, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
-        List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
-        projectIdeaList.add(bachelorProjectIdea);
-        List<Employee> supervisorList = new ArrayList<Employee>();
-        supervisorList.add(bachelorSupervisor2);
-        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeWord, "Design", false));
-        unmatchedProjectIdeas.add(bachelorProjectIdea);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-        assertTrue(result.matches.get(0).getProjectIdea().equals(bachelorProjectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(bachelorSupervisor2));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
-    @Test
-    @Transactional
-    @Rollback
-    /*  test that a master which has filled up his slot for bachelor but has slots left for master can supervise a bachelor idea */
-    public void testSlotForMasterSupervisor() {
-//Employee bachelorSupervisor2 = createEmployee("David", "Hallberg", languages);
-        supervisorAvailability.add(new Availability(masterSupervisor, 3L, 3, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(masterSupervisor, 3L, 4, bachelorProjectClass));
-//supervisorAvailability.add(new Availability(bachelorSupervisor2, 0L, 1, bachelorProjectClass));
-        unmatchedProjectIdeas.add(bachelorProjectIdea);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-
-        assertTrue(result.matches.get(0).getProjectIdea().equals(bachelorProjectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(masterSupervisor));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
-    @Test
-    @Transactional
-    @Rollback
-    /*  test that the supervisor who has the highest total slot available will be chosen */
-    public void testIncreaseSlotForMasterSupervisor() {
-        Employee davidH = createEmployee("David", "Hallberg", languages);
-        Employee henrikH = createEmployee("Henrik", "Hansson", languages);
-//ProjectIdea firstBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
-        supervisorAvailability.add(new Availability(henrikH, 2L, 3, bachelorProjectClass)); // total slot = 2
-        supervisorAvailability.add(new Availability(henrikH, 3L, 4, masterProjectClass));
-        supervisorAvailability.add(new Availability(davidH, 1L, 1, bachelorProjectClass));          // total slot = 1
-        supervisorAvailability.add(new Availability(davidH, 0L, 1, masterProjectClass));
-        unmatchedProjectIdeas.add(masterProjectIdea);
-        unmatchedProjectIdeas.add(bachelorProjectIdea);
-
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-        assertTrue(result.matches.get(0).getProjectIdea().equals(masterProjectIdea));
-        assertTrue(result.matches.get(0).getSupervisor().equals(henrikH));
-        assertTrue(result.matches.get(1).getProjectIdea().equals(bachelorProjectIdea));
-        assertTrue(result.matches.get(1).getSupervisor().equals(henrikH));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
-    @Test
-    @Transactional
-    @Rollback
-    /*  test that a master supervisor is chosen for a master project idea which has the same points as a bachelor project idea */
-    public void testIncreaseSlotForMasterSupervisor_v2() {
-        Employee davidH = createEmployee("David", "Hallberg", languages);
-        Employee henrikH = createEmployee("Henrik", "Hansson", languages);
-        supervisorAvailability.add(new Availability(henrikH, 3L, 3, bachelorProjectClass));
-        supervisorAvailability.add(new Availability(henrikH, 3L, 4, masterProjectClass));
-        supervisorAvailability.add(new Availability(davidH, 0L, 1, bachelorProjectClass));
-        unmatchedProjectIdeas.add(bachelorProjectIdea);
-        unmatchedProjectIdeas.add(masterProjectIdea);
-        bachelorProjectIdea.setPreferredSupervisor(henrikH);
-        masterProjectIdea.setPreferredSupervisor(henrikH);
-        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
-        assertTrue(result.matches.size() > 0);
-        assertTrue(result.matches.get(0).getPoints() == 10);
-        assertTrue(result.matches.get(1).getPoints() == 0);
-        assertTrue(result.matches.get(0).getSupervisor().equals(henrikH));
-        assertTrue(result.matches.get(1).getSupervisor().equals(davidH));
-        assertTrue(result.matches.get(0).getProjectIdea().equals(masterProjectIdea));
-        assertTrue(result.matches.get(1).getProjectIdea().equals(bachelorProjectIdea));
-        assertTrue(result.unmatched.size() == 0);
-    }
-
-    @Test
-    @Transactional
-    @Rollback
-    /*  three supervisors which are matched against three project ideas  */
-    public void testIncreaseSlotForMasterSupervisor_v3() {
+    /*  Test 1.
+     *  ==================================================================================
+     *
+     *  Prerequisites: two supervisors are matched against one bachelor project idea,
+     *  both supervisors have the SAME "total availability" (9)
+     *  and they both have a calculated match of 10 points,
+     *
+     *  Tests:  in the first test we verify that "henrikH" is found, because "davidH"
+     *  has less availability slots (4) for bachelor project ideas
+     *
+     * */
+    public void testDavidH_Has_Less_Available_Slots_For_Bachelor() {
         List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
         List<Employee> supervisorList = new ArrayList<Employee>();
-
         Employee davidH = createEmployee("David", "Hallberg", languages);
-        supervisorAvailability.clear();
-        supervisorAvailability.add(new Availability(davidH, 0L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(davidH, 1L, 5, bachelorProjectClass));
         supervisorAvailability.add(new Availability(davidH, 0L, 5, masterProjectClass));
 
+        Employee henrikH = createEmployee("Henrik", "Hansson", languages);
+        supervisorAvailability.add(new Availability(henrikH, 0L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(henrikH, 1L, 5, masterProjectClass));
+        supervisorList.add(henrikH);
+
+        ProjectIdea secondBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
+        projectIdeaList.clear();
+        projectIdeaList.add(secondBachelorIdea); // David Hallberg is preferred supervisor for this project idea
+        secondBachelorIdea.setPreferredSupervisor(davidH);
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development__", false));
+
+        unmatchedProjectIdeas.add(secondBachelorIdea);
+
+        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
+        assertTrue(result.matches.size() == 1);
+        assertTrue(result.matches.get(0).getPoints() == 10);
+        assertTrue(result.matches.get(0).getSupervisor().equals(henrikH));
+        assertTrue(result.matches.get(0).getProjectIdea().equals(secondBachelorIdea));
+    }
+
+    @Test
+    @Transactional
+    @Rollback
+   /* .
+   *  Test 2.
+   *  ==================================================================================
+   *  Prerequisites: two supervisors are matched against one bachelor project idea,
+   *  both supervisors have the SAME "total availability" (9)
+   *  and they both have a calculated match of 10 points,
+   *
+   *  Tests: In the second test we verify that "davidH" is found, because "henrikH"
+   *  has less availability slots (4) for bachelor project ideas
+   * */
+    public void testHenrikH_Has_Less_Available_Slots_For_Bachelor() {
+        List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
+        List<Employee> supervisorList = new ArrayList<Employee>();
+        Employee davidH = createEmployee("David", "Hallberg", languages);
+        supervisorAvailability.add(new Availability(davidH, 0L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(davidH, 1L, 5, masterProjectClass));
+
+        Employee henrikH = createEmployee("Henrik", "Hansson", languages);
+        supervisorAvailability.add(new Availability(henrikH, 1L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(henrikH, 0L, 5, masterProjectClass));
+        supervisorList.add(henrikH);
+
+        ProjectIdea secondBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
+        projectIdeaList.clear();
+        projectIdeaList.add(secondBachelorIdea); // David Hallberg is preferred supervisor for this project idea
+        secondBachelorIdea.setPreferredSupervisor(davidH);
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development__", false));
+
+        unmatchedProjectIdeas.add(secondBachelorIdea);
+
+        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
+        assertTrue(result.matches.size() == 1);
+        assertTrue(result.matches.get(0).getPoints() == 10);
+        assertTrue(result.matches.get(0).getSupervisor().equals(davidH));
+        assertTrue(result.matches.get(0).getProjectIdea().equals(secondBachelorIdea));
+    }
+
+    @Test
+    @Transactional
+    @Rollback
+  /* Test 3.
+   * ==================================================================================
+   *  Prerequisites: two supervisors are matched against one bachelor project idea,
+   *  both supervisors have "open" availability slots for both master and bachelor projects
+   *  the "total availability" is DIFFERENT 8 slots vs. 9 slots for the supervisors but they have both a calculated match of 10 points,
+   *
+   *  Tests: We now perform a third test "testDavidH_Has_Less_Total_Available_Slots", here we test that "henrikH" is found, because "davidH"
+   *  has less "total available" slots (8) compared to 9 for "henrikH" for project ideas (master + bachelor)
+   * */
+    public void testDavidH_Has_Less_Total_Available_Slots() {
+        List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
+        List<Employee> supervisorList = new ArrayList<Employee>();
+        Employee davidH = createEmployee("David", "Hallberg", languages);
+        supervisorAvailability.add(new Availability(davidH, 0L, 4, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(davidH, 1L, 5, masterProjectClass));
+
+        Employee henrikH = createEmployee("Henrik", "Hansson", languages);
+        supervisorAvailability.add(new Availability(henrikH, 1L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(henrikH, 0L, 5, masterProjectClass));
+        supervisorList.add(henrikH);
+
+        ProjectIdea secondBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
+        projectIdeaList.clear();
+        projectIdeaList.add(secondBachelorIdea); // David Hallberg is preferred supervisor for this project idea
+        secondBachelorIdea.setPreferredSupervisor(davidH);
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
+        addKeyWords(supervisorList, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development__", false));
+
+        unmatchedProjectIdeas.add(secondBachelorIdea);
+
+        Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
+        assertTrue(result.matches.size() == 1);
+        assertTrue(result.matches.get(0).getPoints() == 10);
+        assertTrue(result.matches.get(0).getSupervisor().equals(henrikH));
+        assertTrue(result.matches.get(0).getProjectIdea().equals(secondBachelorIdea));
+    }
+
+    @Test
+    @Transactional
+    @Rollback
+    /*  Test 4
+     *   =============================================================================================
+     *   The test verifies that project classes are regarded when sorting matched Pairs (containing a project idea and a supervisor)
+     *  The test also verifies that the matching algorithm can handle more "complicated" match situations.
+     * */
+    public void testThreeSupervisorsAndThreeProjectIdeas_Available_Slots_Are_The_Same() {
+        List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
+        List<Employee> supervisorList = new ArrayList<Employee>();
+        Employee davidH = createEmployee("David", "Hallberg", languages);
+        supervisorAvailability.add(new Availability(davidH, 0L, 5, bachelorProjectClass));
+        supervisorAvailability.add(new Availability(davidH, 0L, 5, masterProjectClass));
         supervisorList.clear();
         supervisorList.add(davidH);
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeArea, "IT för lärande", false));
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "Business process management (BPM)", false));
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "Flexibelt lärande", false));
 
         Employee henrikH = createEmployee("Henrik", "Hansson", languages);
         supervisorAvailability.add(new Availability(henrikH, 0L, 5, bachelorProjectClass));
         supervisorAvailability.add(new Availability(henrikH, 0L, 5, masterProjectClass));
-
         supervisorList.clear();
         supervisorList.add(henrikH);
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeArea, "Technology Enhanced Learning", false));
         addKeyWords(supervisorList, null, createKeyword(keywordTypeArea, "ICT for Development", false));
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "Flexibelt lärande", false));
+        addKeyWords(supervisorList, null, createKeyword(keywordTypeArea, "ICT for Development__", false));
 
         Employee henrikBergstr = createEmployee("Henrik", "Bergström", languages);        // login henrikbe
         supervisorAvailability.add(new Availability(henrikBergstr, 0L, 5, bachelorProjectClass));
         supervisorAvailability.add(new Availability(henrikBergstr, 0L, 5, masterProjectClass));
-
         supervisorList.clear();
         supervisorList.add(henrikBergstr);
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "ACT Agera i kommunikation med teknik", false));
         addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "System development", false));
-        addKeyWords(supervisorList, null, createKeyword(keywordTypeWord, "IT-architectures", false));
 
         ProjectIdea firstBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
         projectIdeaList.clear();
         projectIdeaList.add(firstBachelorIdea); // no preferred supervisor for this project idea
         addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
         addKeyWords(null, projectIdeaList, createKeyword(keywordTypeWord, "System development", false));
-        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeWord, "Enterprise 2.0", false));
 
         ProjectIdea masterIdea = createProjectIdea(masterProjectClass, applicationPeriod);
         projectIdeaList.clear();
         projectIdeaList.add(masterIdea); // no preferred supervisor for this project idea
-        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "Interaction design", false));
         addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
-        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "Digital Systems Security", false));
         addKeyWords(null, projectIdeaList, createKeyword(keywordTypeWord, "System development", false));
-        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeWord, "Information system theory", false));
 
         ProjectIdea secondBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
         projectIdeaList.clear();
         projectIdeaList.add(secondBachelorIdea); // David Hallberg is preferred supervisor for this project idea
         secondBachelorIdea.setPreferredSupervisor(davidH);
-        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "E-government and E-democracy", false));
+        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development", false));
+        addKeyWords(null, projectIdeaList, createKeyword(keywordTypeArea, "ICT for Development__", false));
 
-        unmatchedProjectIdeas.clear();
         unmatchedProjectIdeas.add(firstBachelorIdea);
         unmatchedProjectIdeas.add(secondBachelorIdea);
         unmatchedProjectIdeas.add(masterIdea);
@@ -703,15 +652,16 @@ public class TestGreedyMatchingAlgorithm {
         assertTrue(result.matches.size() == 3);
 
         assertTrue(result.matches.get(0).getPoints() == 10);
-        assertTrue(result.matches.get(1).getPoints() == 5);
-        assertTrue(result.matches.get(2).getPoints() == 5);
-
         assertTrue(result.matches.get(0).getSupervisor().equals(davidH));
-        assertTrue(result.matches.get(1).getSupervisor().equals(henrikH));
-        assertTrue(result.matches.get(2).getSupervisor().equals(henrikH));
-
         assertTrue(result.matches.get(0).getProjectIdea().equals(secondBachelorIdea));
+
+        assertTrue(result.matches.get(1).getPoints() == 5);
+        assertTrue(result.matches.get(1).getSupervisor().equals(henrikH));
         assertTrue(result.matches.get(1).getProjectIdea().equals(firstBachelorIdea));
+
+        assertTrue(result.matches.get(2).getPoints() == 5);
+        assertTrue(result.matches.get(2).getSupervisor().equals(henrikH));
         assertTrue(result.matches.get(2).getProjectIdea().equals(masterIdea));
     }
+
 }