diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java
index 6a4553170e..e48d9220bb 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java
+++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java
@@ -1,19 +1,32 @@
 package se.su.dsv.scipro.supervisor.pages;
 
 import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
+import se.su.dsv.scipro.data.dataobjects.Employee;
+import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
 import se.su.dsv.scipro.security.auth.Authorization;
 import se.su.dsv.scipro.security.auth.roles.Roles;
+import se.su.dsv.scipro.supervisor.panels.ProfilePanel;
 import se.su.dsv.scipro.user.panels.UserProfilePanelFactory;
 
 @Authorization(authorizedRoles={Roles.EMPLOYEE})
 //@Authorization(authorizedRoles={Roles.SYSADMIN})
 public class SupervisorProfilePage extends AbstractSupervisorPage {
 	@SpringBean
+    SupervisorDao supervisorDao;
+    @SpringBean
 	private UserProfilePanelFactory factory;
 	public SupervisorProfilePage(final PageParameters pp){
 		super(pp);
-		add(factory.createUserProfilePanelForUser("supervisorProfile",getUser()));
+		//add(factory.createUserProfilePanelForUser("supervisorProfile",getUser()));
+        if (supervisorDao.getFrom(getUser()) == null){
+        	add(new EmptyPanel("supervisorProfile"));
+        }
+        else {
+        	add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser()))));	
+        }
 	}
 }
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
new file mode 100644
index 0000000000..ae28e552c4
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+	<wicket:panel>
+		<form wicket:id="form">
+			<div class="append-bottom">
+				<label>Unit: (imported from Daisy)</label>
+				<div wicket:id="unitlabel"></div>
+			</div>
+			
+			<div class="append-bottom">
+				<label>Research areas: (imported from Daisy)</label>
+				<div wicket:id="emptylabel"></div>
+				<div wicket:id="arealistview">
+					<span wicket:id="arealabel"></span> 
+<!-- 					<input type="checkbox" wicket:id="areacheckbox" /> -->
+				</div>
+			</div>
+			
+			<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" />
+				</div>
+			</div>
+			
+			<div><label>Select keywords: </label></div>
+			<div class="span-22 last" wicket:id="regularcontainer">
+				<div class="span-11">
+				 <label>Available</label>
+				 <div wicket:id="regularlistview">
+						<span wicket:id="regularlabel"></span> <input type="checkbox"
+							wicket:id="regularcheckbox" />
+					</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" />
+					</div>
+				</div>
+			</div>
+			
+
+					
+
+
+					
+					
+
+		</form>
+	</wicket:panel>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java
new file mode 100644
index 0000000000..08c55fbc08
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java
@@ -0,0 +1,210 @@
+package se.su.dsv.scipro.supervisor.panels;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+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.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+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.LanguageDao;
+import se.su.dsv.scipro.data.dataobjects.Employee;
+import se.su.dsv.scipro.data.dataobjects.Language;
+import se.su.dsv.scipro.match.dao.interfaces.KeywordDao;
+import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
+import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
+import se.su.dsv.scipro.match.dataobject.Keyword;
+import se.su.dsv.scipro.match.dataobject.KeywordType;
+
+/**
+ * Author: fred
+ * Date: 2/24/12
+ * Time: 3:07 PM
+ */
+public class ProfilePanel extends Panel {
+
+	private static final long serialVersionUID = 1L;
+	private WebMarkupContainer regularContainer;
+
+	public ProfilePanel(String id, Model<Employee> employeeModel) {
+		super(id);
+		add(new ProfileForm("form", employeeModel));
+	}
+
+	public class ProfileForm extends Form<Void> {
+
+		private static final long serialVersionUID = 1L;
+
+		@SpringBean
+		LanguageDao languageDao;
+		@SpringBean
+		SupervisorDao employeeDao;
+		@SpringBean
+		KeywordTypeDao keywordTypeDao;
+		@SpringBean
+		KeywordDao keywordDao;
+
+
+		public ProfileForm(String id, final Model<Employee> employeeModel) {
+			super(id);
+
+			ListView<Language> languageListView = new ListView<Language>("languagelistview", languageDao.findAll()) {
+
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				protected void populateItem(ListItem<Language> item) {
+					final Language l = item.getModelObject();
+					item.add(new Label("languagelabel", l.getName()));
+					item.add(new AjaxCheckBox("languagecheckbox", new Model<Boolean>(employeeModel.getObject().getCapabilities().getLanguages().contains(l))){
+						private static final long serialVersionUID = 1L;
+						@Override
+						protected void onUpdate(AjaxRequestTarget target) {
+							Set<Language> languages = employeeModel.getObject().getCapabilities().getLanguages();
+							if (getModelObject()==true){
+								languages.add(l);
+								System.out.println("added language " + l.getName());
+							}
+							else {
+								languages.remove(l);
+								System.out.println("removed language " + l.getName());
+							}
+							employeeModel.getObject().getCapabilities().setLanguages(languages);
+							employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
+						}
+					});
+				}
+			};
+			add(languageListView);
+
+			final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT);
+			if (employeeModel.getObject().getKeywords().getFiltered(unitType) == null || employeeModel.getObject().getKeywords().getFiltered(unitType).isEmpty()){
+				add(new Label("unitlabel", "You are not registered under any existing/active unit in Daisy. Please make sure you are registered under an existing/active unit in Daisy ASAP."));
+			}
+			else {
+				add(new Label("unitlabel", employeeModel.getObject().getKeywords().getFiltered(unitType).get(0).getKeyword()));
+			}
+
+			final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA);
+
+			add(new Label("emptylabel", "You do not have any active/existing research areas selected in Daisy. Please make sure that you select at least one active/existing research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty()));
+
+			ListView<Keyword> areaListView = new ListView<Keyword>("arealistview", new ArrayList<Keyword>(keywordDao.getKeywords(areaType, false))){
+				private static final long serialVersionUID = 1L;
+				@Override
+				protected void populateItem(ListItem<Keyword> item) {
+					final Keyword kw = item.getModelObject();
+					item.add(new Label("arealabel", kw.getKeyword()));
+					if (!employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw)){
+						item.setVisible(false);
+					}
+					item.add(new AjaxCheckBox("areacheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw))){
+						private static final long serialVersionUID = 1L;
+						@Override
+						protected void onUpdate(AjaxRequestTarget target) {
+							Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
+
+							if (getModelObject()==true){
+								oldKeywords.add(kw);
+								System.out.println("added regular " + kw.getKeyword());
+							}
+							else {
+								oldKeywords.remove(kw);
+								System.out.println("removed regular " + kw.getKeyword());
+							}
+
+							employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
+							employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
+
+							target.addComponent(regularContainer);
+						}
+					});
+				}
+			};
+			add(areaListView);
+
+			regularContainer = new WebMarkupContainer("regularcontainer");
+			regularContainer.setOutputMarkupId(true);
+			add(regularContainer);
+
+			final KeywordType regularType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR);
+
+			ListView<Keyword> regularListView = new ListView<Keyword>("regularlistview", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){
+				private static final long serialVersionUID = 1L;
+				@Override
+				protected void populateItem(ListItem<Keyword> item) {
+					final Keyword kw = item.getModelObject();
+					if(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){
+						item.setVisible(false);
+					}
+					item.add(new Label("regularlabel", kw.getKeyword()));
+					item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){
+						private static final long serialVersionUID = 1L;
+						@Override
+						protected void onUpdate(AjaxRequestTarget target) {
+							Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
+
+							if (getModelObject()==true){
+								oldKeywords.add(kw);
+								System.out.println("added regular " + kw.getKeyword());
+							}
+							else {
+								oldKeywords.remove(kw);
+								System.out.println("removed regular " + kw.getKeyword());
+							}
+
+							employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
+							employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
+
+							target.addComponent(regularContainer);
+						}
+					});
+				}
+			};
+			regularContainer.add(regularListView);
+
+			ListView<Keyword> regularListView2 = new ListView<Keyword>("regularlistview2", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){
+				private static final long serialVersionUID = 1L;
+				@Override
+				protected void populateItem(ListItem<Keyword> item) {
+					final Keyword kw = item.getModelObject();
+					if(!employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){
+						item.setVisible(false);
+					}
+					item.add(new Label("regularlabel", kw.getKeyword()));
+					item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){
+						private static final long serialVersionUID = 1L;
+						@Override
+						protected void onUpdate(AjaxRequestTarget target) {
+							Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
+
+							if (getModelObject()==true){
+								oldKeywords.add(kw);
+								System.out.println("added regular " + kw.getKeyword());
+							}
+							else {
+								oldKeywords.remove(kw);
+								System.out.println("removed regular " + kw.getKeyword());
+							}
+
+							employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
+							employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
+
+							target.addComponent(regularContainer);
+						}
+					});
+				}
+			};
+			regularContainer.add(regularListView2);
+
+		}
+	}
+}