diff --git a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java
index 5c8eebbf94..d81e73fe2b 100644
--- a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java
+++ b/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java
@@ -25,7 +25,9 @@ import se.su.dsv.scipro.message.pages.PrivateMessagesPage;
 import se.su.dsv.scipro.peer.pages.PeerReviewTemplatePage;
 import se.su.dsv.scipro.project.pages.FinalSeminarProjectListPage;
 import se.su.dsv.scipro.project.pages.ProjectOppositionPage;
+import se.su.dsv.scipro.project.pages.ProjectPartnerPage;
 import se.su.dsv.scipro.project.pages.ProjectStartPage;
+import se.su.dsv.scipro.project.pages.SelfCheckPage;
 import se.su.dsv.scipro.security.auth.MetaDataActionStrategy;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 import se.su.dsv.scipro.supervisor.pages.SupervisorProjectsFinalSeminarPage;
@@ -55,6 +57,8 @@ public class MainMenuPanel extends Panel implements IWiQueryPlugin {
 		projectMenuSubItems.add(new MenuItem(ProjectStartPage.MAIN_MENU_LABEL, ProjectStartPage.class));
 		projectMenuSubItems.add(new MenuItem(ProjectOppositionPage.MAIN_MENU_LABEL, ProjectOppositionPage.class));
 		projectMenuSubItems.add(new MenuItem(FinalSeminarProjectListPage.MAIN_MENU_LABEL, FinalSeminarProjectListPage.class));
+		projectMenuSubItems.add(new MenuItem("Project Partner", ProjectPartnerPage.class));
+		projectMenuSubItems.add(new MenuItem("Self Check", SelfCheckPage.class));
 		MainMenuItem projectMenuItem = new MainMenuItem("projectMenuItem", ProjectStartPage.MAIN_MENU_LABEL, ProjectStartPage.class, containerClass, projectMenuSubItems);
         add(projectMenuItem);
 		
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.html b/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.html
new file mode 100644
index 0000000000..a235198823
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.html
@@ -0,0 +1,21 @@
+<!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 wicket:id="stateOfMindContainer">
+			<form wicket:id="form">
+				<table wicket:id="group">
+					<tr wicket:id="persons">
+						<td><input type="radio" wicket:id="radio" /></td>
+						<td> <img wicket:id="image"/></td>
+					</tr> 
+				</table>
+			</form>
+		</div>
+	</wicket:panel>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.java b/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.java
new file mode 100644
index 0000000000..1aa44102c5
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/checklists/panels/TrafficLightPanel.java
@@ -0,0 +1,74 @@
+package se.su.dsv.scipro.checklists.panels;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.basic.MultiLineLabel;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.Radio;
+import org.apache.wicket.markup.html.form.RadioGroup;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+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.core.DefaultJsScopeUiEvent;
+import org.odlabs.wiquery.ui.slider.Slider;
+
+import se.su.dsv.scipro.SciProSession;
+import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
+import se.su.dsv.scipro.data.dataobjects.Project;
+import se.su.dsv.scipro.data.enums.StateOfMind;
+import se.su.dsv.scipro.knol.resource.page.StaticImage;
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+/**
+ * @author fnorbe@dsv.su.se
+ */
+
+public class TrafficLightPanel extends Panel {
+
+
+	private static final long serialVersionUID = 8862892008428526067L;
+
+
+	public TrafficLightPanel(String id, WebPage parent) {
+		super(id);
+		WebMarkupContainer stateOfMindContainer = new WebMarkupContainer(
+				"stateOfMindContainer");
+		add(stateOfMindContainer);
+
+		Form<StateOfMind> f = new Form<StateOfMind>("form");
+		stateOfMindContainer.add(f);
+		RadioGroup<StateOfMind> group = new RadioGroup<StateOfMind>("group");
+		f.add(group);
+
+		ListView<StateOfMind> persons = new ListView<StateOfMind>("persons",
+				Arrays.asList(StateOfMind.values())) {
+			protected void populateItem(ListItem<StateOfMind> item) {
+				StateOfMind stateOfMind = item.getModelObject();
+				item.add(new Radio<StateOfMind>("radio", item.getModel()));
+				StaticImage image = null;
+				if (stateOfMind.equals(StateOfMind.FINE)) {
+					image = new StaticImage("image", new Model<String>(
+							"images/icons/green_ball_32.png"));
+				} else if (stateOfMind.equals(StateOfMind.NEEDHELP)) {
+					image = new StaticImage("image", new Model<String>(
+					"images/icons/red_ball_32.png"));
+				} else if (stateOfMind.equals(StateOfMind.NEUTRAL)) {
+					image = new StaticImage("image", new Model<String>(
+					"images/icons/yellow_ball_32.png"));
+				}
+				item.add(image);
+			};
+		};
+		group.add(persons);
+	}
+
+}
+
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListAnswerDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListAnswerDao.java
new file mode 100644
index 0000000000..8fe29de76d
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListAnswerDao.java
@@ -0,0 +1,7 @@
+package se.su.dsv.scipro.data.dao.interfaces;
+
+import se.su.dsv.scipro.data.dataobjects.CheckListAnswer;
+
+public interface CheckListAnswerDao extends Dao<CheckListAnswer> {
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListDao.java
new file mode 100644
index 0000000000..0dab6f8068
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListDao.java
@@ -0,0 +1,7 @@
+package se.su.dsv.scipro.data.dao.interfaces;
+
+import se.su.dsv.scipro.data.dataobjects.CheckList;
+
+public interface CheckListDao extends Dao<CheckList> {
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListQuestionDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListQuestionDao.java
new file mode 100644
index 0000000000..fbf00a0b71
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListQuestionDao.java
@@ -0,0 +1,7 @@
+package se.su.dsv.scipro.data.dao.interfaces;
+
+import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
+
+public interface CheckListQuestionDao extends Dao<CheckListQuestion> {
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListTemplateDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListTemplateDao.java
new file mode 100644
index 0000000000..24885dffb9
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/CheckListTemplateDao.java
@@ -0,0 +1,8 @@
+package se.su.dsv.scipro.data.dao.interfaces;
+
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+
+public interface CheckListTemplateDao extends Dao<CheckListTemplate> {
+
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListAnswerDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListAnswerDaoJPAImp.java
new file mode 100644
index 0000000000..e30b653abd
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListAnswerDaoJPAImp.java
@@ -0,0 +1,23 @@
+package se.su.dsv.scipro.data.dao.jpa;
+
+import org.springframework.stereotype.Repository;
+
+import se.su.dsv.scipro.data.dao.interfaces.CheckListAnswerDao;
+import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
+import se.su.dsv.scipro.data.dataobjects.CheckListAnswer;
+import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
+
+/**
+ * 
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ * 
+ */
+
+@Repository("checkListAnswerDao")
+public class CheckListAnswerDaoJPAImp extends AbstractDaoJPAImp<CheckListAnswer>
+		implements CheckListAnswerDao {
+
+	public CheckListAnswerDaoJPAImp() {
+		super(CheckListAnswer.class);
+	}
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListDaoJPAImp.java
new file mode 100644
index 0000000000..4f0786dd92
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListDaoJPAImp.java
@@ -0,0 +1,21 @@
+package se.su.dsv.scipro.data.dao.jpa;
+
+import org.springframework.stereotype.Repository;
+
+import se.su.dsv.scipro.data.dao.interfaces.CheckListDao;
+import se.su.dsv.scipro.data.dataobjects.CheckList;
+
+/**
+ * 
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ * 
+ */
+
+@Repository("checkListDao")
+public class CheckListDaoJPAImp extends AbstractDaoJPAImp<CheckList>
+		implements CheckListDao {
+
+	public CheckListDaoJPAImp() {
+		super(CheckList.class);
+	}
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListQuestionDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListQuestionDaoJPAImp.java
new file mode 100644
index 0000000000..35eda47251
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListQuestionDaoJPAImp.java
@@ -0,0 +1,21 @@
+package se.su.dsv.scipro.data.dao.jpa;
+
+import org.springframework.stereotype.Repository;
+
+import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
+import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
+
+/**
+ * 
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ * 
+ */
+
+@Repository("checkListQuestionDao")
+public class CheckListQuestionDaoJPAImp extends AbstractDaoJPAImp<CheckListQuestion>
+		implements CheckListQuestionDao {
+
+	public CheckListQuestionDaoJPAImp() {
+		super(CheckListQuestion.class);
+	}
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListTemplateDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListTemplateDaoJPAImp.java
new file mode 100644
index 0000000000..12e9a906e9
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/CheckListTemplateDaoJPAImp.java
@@ -0,0 +1,23 @@
+package se.su.dsv.scipro.data.dao.jpa;
+
+import org.springframework.stereotype.Repository;
+
+import se.su.dsv.scipro.data.dao.interfaces.CheckListQuestionDao;
+import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
+import se.su.dsv.scipro.data.dataobjects.CheckListQuestion;
+import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
+
+/**
+ * 
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ * 
+ */
+
+@Repository("checkListTemplateDao")
+public class CheckListTemplateDaoJPAImp extends AbstractDaoJPAImp<CheckListTemplate>
+		implements CheckListTemplateDao {
+
+	public CheckListTemplateDaoJPAImp() {
+		super(CheckListTemplate.class);
+	}
+}
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckList.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckList.java
new file mode 100644
index 0000000000..9629983bbf
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckList.java
@@ -0,0 +1,140 @@
+package se.su.dsv.scipro.data.dataobjects;
+
+import java.util.List;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+/**
+
+ * @author Fredrik Norberg	fnorbe@dsv.su.se
+ *
+ */
+
+@Entity
+@Table(name="checklist")
+@Cacheable(true)
+@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) //Hibernate
+public abstract class CheckList extends LazyDeletableDomainObject{
+
+	private static final long serialVersionUID = 2959377496669050427L;
+	
+	@Id
+	@GeneratedValue
+	private Long id;
+	
+	@Column(nullable=false)
+	private String name;
+	
+	@ManyToOne(optional=false)
+	private User creator;
+	
+	@Column(nullable=false)
+	private List<CheckListQuestion> questions;
+	
+	@Column(nullable=false)
+	private ProjectClass level;
+	
+	public CheckList() {}
+	
+	public CheckList(String name, User creator, ProjectClass level) {
+	this.name = name;
+	this.creator = creator;
+	this.level = level;
+	}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getname() {
+		return name;
+	}
+	
+	public String getName(final int characters) {
+		String result = name;
+		if(name.length() > characters)
+			result = name.substring(0, characters)+"..";
+		return result;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	
+	public void setCreator(User creator) {
+		this.creator = creator;
+	}
+
+	public User getCreator() {
+		return creator;
+	}
+	
+	public List<CheckListQuestion> getquestions(){
+		return questions;
+	}
+	
+	public void setquestions(List<CheckListQuestion> questions){
+		this.questions=questions;
+	}
+	
+	public void setLevel(ProjectClass level){
+		this.level = level;
+	}
+	
+	public ProjectClass getLevel(){
+		return level;
+	}
+	
+	@Override
+	public int hashCode() {
+		final int weight = 31;
+		int result = 17;
+		
+		result = weight * result + ((id == null) ? 0 : (int) (id ^ (id >>> 32)));
+
+		return result;
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (obj instanceof CheckList){
+			
+			CheckList other = (CheckList) obj;
+		
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (!id.equals(other.id))
+				return false;
+
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public String toString() {
+		return getname();
+	}
+
+}
+
+	
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListAnswer.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListAnswer.java
new file mode 100644
index 0000000000..c979fecc97
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListAnswer.java
@@ -0,0 +1,106 @@
+package se.su.dsv.scipro.data.dataobjects;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EntityManager;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.TypedQuery;
+
+import org.apache.wicket.markup.html.panel.Panel;
+
+import se.su.dsv.scipro.data.enums.CheckListQuestionAnswer;
+import se.su.dsv.scipro.data.enums.EventStatus;
+import se.su.dsv.scipro.schedule.baseevent.panels.EventScheduleDetailsPanel;
+import se.su.dsv.scipro.util.IAjaxCallback;
+
+/**
+ * @author Fredrik Norberg  fnorbe@dsv.su.se
+ *
+ */
+@Entity
+@Table(name="checklist_answer")
+public class CheckListAnswer extends DomainObject{
+
+	private static final long serialVersionUID = 2959377496669050427L;
+	
+	@Id
+	@GeneratedValue
+	private Long id;
+	
+	@Enumerated(EnumType.STRING)
+	private CheckListQuestionAnswer answer;
+	
+	@ManyToOne
+	private User user;
+	
+	
+	public CheckListAnswer() {}
+	
+	public CheckListAnswer(User user, CheckListQuestionAnswer answer) {
+		this.user = user;
+		this.answer = answer;
+	}
+	
+	public CheckListQuestionAnswer getAnswer() {
+		return answer;
+	}
+
+	public void setAnswer(CheckListQuestionAnswer answer) {
+		this.answer = answer;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	@Override
+	public int hashCode() {
+		final int weight = 31;
+		int result = 17;
+		
+		result = weight * result + ((id == null) ? 0 : (int) (id ^ (id >>> 32)));
+
+		return result;
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (obj instanceof CheckListAnswer){
+			
+			CheckListAnswer other = (CheckListAnswer) obj;
+		
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (!id.equals(other.id))
+				return false;
+
+			return true;
+		}
+		return false;
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListQuestion.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListQuestion.java
new file mode 100644
index 0000000000..fb9d0d90a9
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListQuestion.java
@@ -0,0 +1,116 @@
+package se.su.dsv.scipro.data.dataobjects;
+
+import java.util.List;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+/**
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ */
+
+
+@Entity
+@Table(name="checklist_question")
+@Cacheable(true)
+@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) //Hibernate
+public abstract class CheckListQuestion extends DomainObject 
+						implements Comparable<CheckListQuestion> {
+
+	private static final long serialVersionUID = 2959377496669050427L;
+	
+	@Id
+	@GeneratedValue
+	private Long id;
+	
+	@Lob
+	@Column(nullable=false)
+	private String question;
+	
+	@Column(nullable=false)
+	private int questionNumber;
+	
+	@OneToMany
+	List<CheckListAnswer> answers;
+	
+	public CheckListQuestion() {}
+	
+	public CheckListQuestion(String question) {
+		this.question = question;
+		questionNumber = answers.size() + 1;
+	}
+	
+	public String getQuestion() {
+		return question;
+	}
+
+	public void setQuestion(String question) {
+		this.question = question;
+	}
+
+	public int getQuestionNumber() {
+		return questionNumber;
+	}
+
+	public void setQuestionNumber(int questionNumber) {
+		this.questionNumber = questionNumber;
+	}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	@Override
+	public int hashCode() {
+		final int weight = 31;
+		int result = 17;
+		
+		result = weight * result + ((id == null) ? 0 : (int) (id ^ (id >>> 32)));
+
+		return result;
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (obj instanceof CheckListQuestion){
+			
+			CheckListQuestion other = (CheckListQuestion) obj;
+		
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (!id.equals(other.id))
+				return false;
+
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public String toString() {
+		return getQuestion();
+	}
+
+	@Override
+	public int compareTo(CheckListQuestion other) {
+		return questionNumber - other.questionNumber;
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListTemplate.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListTemplate.java
new file mode 100644
index 0000000000..74a47ffacf
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/CheckListTemplate.java
@@ -0,0 +1,107 @@
+package se.su.dsv.scipro.data.dataobjects;
+
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+/**
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ *
+ */
+@Entity
+@Table(name="checklist_template")
+public class CheckListTemplate extends DomainObject {
+
+	private static final long serialVersionUID = 2959377496669050427L;
+	
+	@Id
+	@GeneratedValue
+	private Long id;
+	
+	@Column(nullable=false)
+	private String name;
+	
+	@Lob
+	@ElementCollection
+	List<String> questions;
+	
+	@ManyToOne(optional=false)
+	private User creator;
+	
+	public CheckListTemplate() {}
+	
+	public CheckListTemplate(String name, User creator) {
+		this.name = name;
+		this.creator = creator;
+	}
+	
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public void setCreator(User creator) {
+		this.creator = creator;
+	}
+
+	public User getCreator() {
+		return creator;
+	}
+	
+	public List<String> getQuestions(){
+		return questions;
+	}
+	
+	public void setQuestions(List<String> questions){
+		this.questions = questions;
+	}
+	
+	@Override
+	public int hashCode() {
+		final int weight = 31;
+		int result = 17;
+		
+		result = weight * result + ((id == null) ? 0 : (int) (id ^ (id >>> 32)));
+
+		return result;
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (obj instanceof CheckListTemplate){
+			
+			CheckListTemplate other = (CheckListTemplate) obj;
+		
+			if (id == null) {
+				if (other.id != null)
+					return false;
+			} else if (!id.equals(other.id))
+				return false;
+
+			return true;
+		}
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/data/enums/CheckListQuestionAnswer.java b/src/main/java/se/su/dsv/scipro/data/enums/CheckListQuestionAnswer.java
new file mode 100644
index 0000000000..397b191276
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/data/enums/CheckListQuestionAnswer.java
@@ -0,0 +1,7 @@
+package se.su.dsv.scipro.data.enums;
+
+public enum CheckListQuestionAnswer {
+	RED,
+	GREEN,
+	YELLOW
+}
diff --git a/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.html b/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.html
new file mode 100644
index 0000000000..bca333a27b
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+<wicket:extend>
+	<div wicket:id="trafficLightPanel""></div>
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.java b/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.java
new file mode 100644
index 0000000000..2cdae57ca1
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/project/pages/SelfCheckPage.java
@@ -0,0 +1,19 @@
+package se.su.dsv.scipro.project.pages;
+
+import org.apache.wicket.PageParameters;
+
+import se.su.dsv.scipro.checklists.panels.TrafficLightPanel;
+
+/**
+ * @author Fredrik Norberg - fnorbe@dsv.su.se
+ * 
+ */
+
+public class SelfCheckPage extends ProjectPage {
+
+	public SelfCheckPage(PageParameters pp) {
+		super(pp);
+		add(new TrafficLightPanel("trafficLightPanel", this));
+	}
+
+}
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 b351cbd3c9..719379f0e4 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
@@ -18,6 +18,7 @@ import se.su.dsv.scipro.project.pages.ProjectPage;
 import se.su.dsv.scipro.project.pages.ProjectPartnerPage;
 import se.su.dsv.scipro.project.pages.ProjectSchedulePlannerPage;
 import se.su.dsv.scipro.project.pages.ProjectStartPage;
+import se.su.dsv.scipro.project.pages.SelfCheckPage;
 import se.su.dsv.scipro.repository.panels.ProjectFilePanel;
 
 /**
@@ -47,6 +48,7 @@ public class ProjectTabMenuPanel extends AbstractMenuPanel {
 			itemList.add(new MenuItem("Peer review", ProjectPeerPortalPage.class));
 			itemList.add(new MenuItem("All Final Seminars", FinalSeminarProjectListPage.class));
 			itemList.add(new MenuItem("Conference", ProjectConferencePage.class));
+			itemList.add(new MenuItem("Self Check", SelfCheckPage.class));
 		} else {
 			itemList.add(new MenuItem("No active project!", NoActiveProjectPage.class));
 			itemList.add(new MenuItem("Project Partner", ProjectPartnerPage.class));
diff --git a/src/main/webapp/css/scipro.css b/src/main/webapp/css/scipro.css
index 1d5fe781cd..a607f46718 100644
--- a/src/main/webapp/css/scipro.css
+++ b/src/main/webapp/css/scipro.css
@@ -1053,3 +1053,7 @@ div.wicket-aa ul li.selected {
 	font-size: 1.4em; 
 	font-style: strong; 
 }
+
+body {
+	font: 0.8em/21px arial,sans-serif;
+}