diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
index c948a9eed80f4787ca98af6b9f6122e891e9c3ef..486cf952f6aea91b0bc9e9aae0591d36f78ccb05 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ModelService.java
@@ -174,8 +174,8 @@ public class ModelService implements IModelService {
 				// this is a trick to load all required subelements of the model... ;/
 				// lets copy model - it will access all elements...
 				new CopyCommand(model).execute();
-				
-				for (ModelData m: model.getProject().getModels()) {
+
+				for (ModelData m : model.getProject().getModels()) {
 					new CopyCommand(m.getModel()).execute();
 				}
 
@@ -188,10 +188,14 @@ public class ModelService implements IModelService {
 				}
 			}
 		}
-		if (!userService.userHasPrivilege(token, PrivilegeType.VIEW_PROJECT, model.getProject())) {
+		if (userService.userHasPrivilege(token, PrivilegeType.VIEW_PROJECT, model.getProject())) {
+			return model;
+		} else if (userService.userHasPrivilege(token, PrivilegeType.ADD_MAP)) {
+			return model;
+		} else {
+			logger.debug(userService.getUserByToken(token).getLogin());
 			throw new SecurityException("User doesn't have access to project");
 		}
-		return model;
 	}
 
 	@Override
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index 5aa08d3c916bdc3f05f6f3d3057fae582b4fd9ca..eea455176c321f0b3e8fc651fc288a3196ff29fa 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -524,10 +524,13 @@ public class ProjectService implements IProjectService {
 	@Override
 	public ProjectView getProjectViewById(Integer id, AuthenticationToken token) throws UserAccessException {
 		Project project = projectDao.getById(id);
-		if (!userService.userHasPrivilege(token, PrivilegeType.VIEW_PROJECT, project)) {
+		if (userService.userHasPrivilege(token, PrivilegeType.VIEW_PROJECT, project)) {
+			return projectViewFactory.create(project);
+		} else if (userService.userHasPrivilege(token, PrivilegeType.ADD_MAP)) {
+			return projectViewFactory.create(project);
+		} else {
 			throw new UserAccessException("User cannot access project");
 		}
-		return projectViewFactory.create(project);
 	}
 
 	/**
diff --git a/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java b/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
index dc31384c26b336dca1425637d960e99c4eaf51d8..9d8825f0ab9da4721d1b8327f716d94aa0c98406 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/FeedbackBean.java
@@ -1,6 +1,5 @@
 package lcsb.mapviewer.bean;
 
-import java.awt.geom.Point2D;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -11,29 +10,15 @@ import javax.faces.bean.ViewScoped;
 import javax.faces.event.ActionEvent;
 
 import org.apache.log4j.Logger;
-import org.primefaces.model.map.LatLng;
 
-import lcsb.mapviewer.common.Configuration;
-import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.common.exception.InvalidArgumentException;
-import lcsb.mapviewer.common.exception.NotImplementedException;
 import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.model.Model;
-import lcsb.mapviewer.model.map.reaction.Modifier;
-import lcsb.mapviewer.model.map.reaction.Product;
-import lcsb.mapviewer.model.map.reaction.Reactant;
-import lcsb.mapviewer.model.map.reaction.Reaction;
-import lcsb.mapviewer.model.map.species.Element;
 import lcsb.mapviewer.model.user.PrivilegeType;
 import lcsb.mapviewer.model.user.User;
 import lcsb.mapviewer.services.interfaces.ICommentService;
 import lcsb.mapviewer.services.interfaces.ISearchService;
 import lcsb.mapviewer.services.interfaces.IUserService;
-import lcsb.mapviewer.services.search.ElementIdentifierDetails;
-import lcsb.mapviewer.services.search.comment.FullCommentView;
-import lcsb.mapviewer.services.search.comment.FullCommentViewFactory;
-import lcsb.mapviewer.services.search.data.ElementIdentifier;
-import lcsb.mapviewer.services.utils.gmap.CoordinationConverter;
 import lcsb.mapviewer.services.view.CommentView;
 
 /**
@@ -44,83 +29,22 @@ import lcsb.mapviewer.services.view.CommentView;
  */
 @ManagedBean(name = "feedbackMB")
 @ViewScoped
-public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> implements Serializable {
-
-	/**
-	 * How many elements to comment should be seen in drop down list on the client
-	 * side.
-	 */
-	private static final int					MAX_FEEDBACK_ELEMENTS_AMOUNT = 5;
-
-	/**
-	 * What's the name of the general comment.
-	 */
-	private static final String				GENERAL_POSITION						 = "<General>";
-
-	/**
-	 * Feedback form on the client side.
-	 */
-	private static final String				FEEDBACK_FORM_STRING				 = "feedbackForm";
+public class FeedbackBean extends AbstractManagedBean implements Serializable {
 
 	/**
 	 * 
 	 */
-	private static final long					serialVersionUID						 = 1L;
+	private static final long					serialVersionUID = 1L;
 
 	/**
 	 * Default class logger.
 	 */
-	private static Logger							logger											 = Logger.getLogger(FeedbackBean.class);
-
-	/**
-	 * Element to which we create comment.
-	 */
-	private String										feedbackElement							 = GENERAL_POSITION;
-
-	/**
-	 * List of possible elements to comment (names only).
-	 */
-	private List<String>							feedbackElementStringList		 = new ArrayList<>();
-
-	/**
-	 * Information if the comment should be visible.
-	 */
-	private boolean										pinned											 = true;
-
-	/**
-	 * Who put a comment.
-	 */
-	private String										name												 = "";
-
-	/**
-	 * Email of a person that comments.
-	 */
-	private String										email												 = "";
-
-	/**
-	 * Content of the comment.
-	 */
-	private String										content											 = "";
+	private static Logger							logger					 = Logger.getLogger(FeedbackBean.class);
 
 	/**
 	 * List of comments available for current project.
 	 */
-	private List<CommentView>					commentList									 = null;
-
-	/**
-	 * Coordinates where comment should be placed.
-	 */
-	private Point2D										lastCommentCoordinates			 = null;
-
-	/**
-	 * List of possible elements to comment.
-	 */
-	private transient List<Object>		feedbackElementList					 = new ArrayList<>();
-
-	/**
-	 * Submodel that is currently commented.
-	 */
-	private transient Model						commentedSubmodel						 = null;
+	private List<CommentView>					commentList			 = null;
 
 	/**
 	 * Bean used for communication with the client side about the data related to
@@ -160,195 +84,6 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 	@ManagedProperty(value = "#{UserService}")
 	private transient IUserService		userService;
 
-	/**
-	 * Method invoked by client to send a comment.
-	 * 
-	 * @param actionEvent
-	 *          event from thefrom the client
-	 */
-	public void sendFeedback(final ActionEvent actionEvent) {
-		String feedbackName = getRequestParameter(FEEDBACK_FORM_STRING + ":feedbackName");
-		String feedbackEmail = getRequestParameter(FEEDBACK_FORM_STRING + ":feedbackEmail");
-		String feedbackContent = getRequestParameter(FEEDBACK_FORM_STRING + ":feedbackContent");
-
-		// find which object we are commenting on
-		Object tmp = null;
-		for (Object object : feedbackElementList) {
-			if (feedbackElement.equals(getDescription(object))) {
-				tmp = object;
-			}
-		}
-		// add a comment to db
-		commentService.addComment(feedbackName, feedbackEmail, feedbackContent, getCurrentTopModel(), lastCommentCoordinates, tmp, pinned, commentedSubmodel);
-		clearNameAndEmail();
-		content = "";
-		// refresh list of comments on the client side
-		refreshComments();
-	}
-
-	/**
-	 * Set default values to {@link #name} and {@link #email}.
-	 */
-	private void clearNameAndEmail() {
-		if (getUserBean().getLoggedUser() != null) {
-			User user = getUserBean().getLoggedUser();
-			if (Configuration.ANONYMOUS_LOGIN.equals(user.getLogin())) {
-				name = "";
-				email = "";
-			} else {
-				name = user.getName() + " " + user.getSurname();
-				email = user.getEmail();
-			}
-		}
-	}
-
-	/**
-	 * Method invoked by client to update list of elements to be commented based
-	 * on coordinates in request params.
-	 * 
-	 * @param actionEvent
-	 *          event from thefrom the client
-	 */
-	public void updateCommentList(final ActionEvent actionEvent) {
-		String latCoord = getRequestParameter("latCoord");
-		String lngCoord = getRequestParameter("lngCoord");
-		String modelIdentifier = getRequestParameter("submodelId");
-
-		LatLng latLng;
-		double lat = Double.parseDouble(latCoord);
-		double lng = Double.parseDouble(lngCoord);
-		latLng = new LatLng(lat, lng);
-
-		commentedSubmodel = getCurrentTopModel().getSubmodelById(modelIdentifier);
-		CoordinationConverter cc = new CoordinationConverter(commentedSubmodel);
-
-		lastCommentCoordinates = cc.toPoint(latLng);
-
-		feedbackElementList = searchService.getClosestElements(commentedSubmodel, lastCommentCoordinates, MAX_FEEDBACK_ELEMENTS_AMOUNT);
-		feedbackElementStringList = new ArrayList<String>();
-		feedbackElementStringList.add(GENERAL_POSITION);
-		for (Object object : feedbackElementList) {
-			String desc = getDescription(object);
-			feedbackElementStringList.add(desc);
-		}
-
-	}
-
-	/**
-	 * Methods returns a list of elements that might be possible commented on
-	 * based on the coordinates.
-	 * 
-	 * @return list of closes elements (to the last coordinates of the mouse on
-	 *         the map) on the map that can be commoneted on
-	 */
-	public List<String> getFeedbackElementStringList() {
-		return feedbackElementStringList;
-	}
-
-	/**
-	 * This method get a short description of the object to comment.
-	 * 
-	 * @param object
-	 *          object for which we want a description
-	 * @return short description of the object
-	 */
-	public String getDescription(final Object object) {
-		if (object instanceof Reaction) {
-			return "Reaction: " + ((Reaction) object).getIdReaction();
-		} else if (object instanceof Element) {
-			Element alias = (Element) object;
-			return alias.getStringType() + ": " + alias.getName();
-		} else {
-			throw new InvalidArgumentException("Unknown class type: " + object.getClass());
-		}
-	}
-
-	/**
-	 * Sets list of elements for possible comment objects.
-	 * 
-	 * @param feedbackElementStringList
-	 *          list of string representation of the elements to be commoneted on
-	 */
-	public void setFeedbackElementStringList(final List<String> feedbackElementStringList) {
-		this.feedbackElementStringList = feedbackElementStringList;
-	}
-
-	/**
-	 * This method returns a description of the reactants for the selected
-	 * reaction. TODO should be improved
-	 * 
-	 * @return description of the reactants for the selected reaction
-	 */
-	public String getElementDescription1() {
-		// iterate over every potentail element to comment on
-		for (Object object : feedbackElementList) {
-			// check only reactions
-			if (object instanceof Reaction) {
-				Reaction reaction = (Reaction) object;
-				// with the same description as currently selected
-				if (feedbackElement.equals(getDescription(object))) {
-					String result = "Reactants: ";
-					for (Reactant reactant : reaction.getReactants()) {
-						result += reactant.getElement().getName() + ", ";
-					}
-					return result;
-				}
-			}
-		}
-		return "";
-	}
-
-	/**
-	 * This method returns a description of the products for the selected
-	 * reaction. TODO should be improved
-	 * 
-	 * @return description of the products for the selected reaction
-	 */
-	public String getElementDescription3() {
-		// iterate over every potential element to comment on
-		for (Object object : feedbackElementList) {
-			// check only reactions
-			if (object instanceof Reaction) {
-				Reaction reaction = (Reaction) object;
-				// with the same description as currently selected object
-				if (feedbackElement.equals(getDescription(object))) {
-					String result = "Products: ";
-					for (Product product : reaction.getProducts()) {
-						result += product.getElement().getName() + ", ";
-					}
-					return result;
-				}
-			}
-		}
-		return "";
-	}
-
-	/**
-	 * This method returns a description of the modifiers for the selected
-	 * reaction. TODO should be improved
-	 * 
-	 * @return description of the modifiers for the selected reaction
-	 */
-	public String getElementDescription2() {
-		// iterate over every potential element to comment on
-		for (Object object : feedbackElementList) {
-			// check only reactions
-			if (object instanceof Reaction) {
-				Reaction reaction = (Reaction) object;
-				// with the same description as currently selected object
-				if (feedbackElement.equals(getDescription(object))) {
-					String result = "Modifiers: ";
-					for (Modifier modifier : reaction.getModifiers()) {
-						result += modifier.getElement().getName() + ", ";
-					}
-
-					return result;
-				}
-			}
-		}
-		return "";
-	}
-
 	/**
 	 * Method called to remove comment from the map.
 	 * 
@@ -368,7 +103,7 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 		} catch (InvalidArgumentException e) {
 			logger.error(e.getMessage(), e);
 		}
-		refreshComments();
+		refreshCommentList();
 	}
 
 	/**
@@ -409,25 +144,6 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 	@Override
 	public void clear() {
 		setCommentList(new ArrayList<>());
-		clearResults();
-		refreshDataInJavascript();
-	}
-
-	/**
-	 * @return the feedbackElement
-	 * @see #feedbackElement
-	 */
-	public String getFeedbackElement() {
-		return feedbackElement;
-	}
-
-	/**
-	 * @param feedbackElement
-	 *          the feedbackElement to set
-	 * @see #feedbackElement
-	 */
-	public void setFeedbackElement(String feedbackElement) {
-		this.feedbackElement = feedbackElement;
 	}
 
 	/**
@@ -498,74 +214,6 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 		this.userService = userService;
 	}
 
-	/**
-	 * @return the pinned
-	 * @see #pinned
-	 */
-	public boolean isPinned() {
-		return pinned;
-	}
-
-	/**
-	 * @param pinned
-	 *          the pinned to set
-	 * @see #pinned
-	 */
-	public void setPinned(boolean pinned) {
-		this.pinned = pinned;
-	}
-
-	/**
-	 * @return the name
-	 * @see #name
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * @param name
-	 *          the name to set
-	 * @see #name
-	 */
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	/**
-	 * @return the email
-	 * @see #email
-	 */
-	public String getEmail() {
-		return email;
-	}
-
-	/**
-	 * @param email
-	 *          the email to set
-	 * @see #email
-	 */
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	/**
-	 * @return the content
-	 * @see #content
-	 */
-	public String getContent() {
-		return content;
-	}
-
-	/**
-	 * @param content
-	 *          the content to set
-	 * @see #content
-	 */
-	public void setContent(String content) {
-		this.content = content;
-	}
-
 	/**
 	 * @return the commentList
 	 * @see #commentList
@@ -586,42 +234,6 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 		this.commentList = commentList;
 	}
 
-	@Override
-	public void init() {
-		clearNameAndEmail();
-	}
-
-	/**
-	 * Refresh list of comments to be visualized.
-	 */
-	protected void refreshComments() {
-		clearResults();
-		for (FullCommentView marker : commentService.getCommentMarkers(getCurrentTopModel())) {
-			addResult(marker);
-		}
-		refreshDataInJavascript();
-	}
-
-	@Override
-	protected List<ElementIdentifier> getLightElementsForSearchResult(FullCommentView view) {
-		return new FullCommentViewFactory().searchResultToElementIdentifier(view, getCurrentTopModel());
-	}
-
-	@Override
-	protected ElementIdentifierDetails getElementInformationForResult(ElementIdentifier element, FullCommentView result) {
-		throw new NotImplementedException();
-	}
-
-	@Override
-	protected List<Pair<String, ElementIdentifierDetails>> getElementInformationForResult(ElementIdentifier element) {
-		List<Pair<String, ElementIdentifierDetails>> result = new ArrayList<>();
-		int counter = 0;
-		for (ElementIdentifierDetails detail : commentService.getElementInformationForResult(element, getCurrentTopModel())) {
-			result.add(new Pair<String, ElementIdentifierDetails>("" + (counter++), detail));
-		}
-		return result;
-	}
-
 	/**
 	 * Returns currently browsed map.
 	 * 
@@ -658,4 +270,9 @@ public class FeedbackBean extends AbstractMarkerManagerBean<FullCommentView> imp
 		this.mapBean = mapBean;
 	}
 
+	@Override
+	public void init() {
+		clear();
+	}
+
 }
diff --git a/web/src/main/java/lcsb/mapviewer/bean/ProjectBean.java b/web/src/main/java/lcsb/mapviewer/bean/ProjectBean.java
index 47ce387df0ba20fa6fd4360cc2d382ad1f047ff6..bafe1cd65ace628698072d51d347e9bc89035db9 100644
--- a/web/src/main/java/lcsb/mapviewer/bean/ProjectBean.java
+++ b/web/src/main/java/lcsb/mapviewer/bean/ProjectBean.java
@@ -740,7 +740,7 @@ public class ProjectBean extends AbstractManagedBean implements Serializable {
 			logger.debug("Selected project was set to: " + this.selectedProject.getProjectId());
 		} catch (PropertyVetoException e) {
 			this.selectedProject = oldValue;
-			sendError(e.getMessage());
+			sendError(e.getMessage(), e);
 		}
 	}
 
@@ -749,7 +749,7 @@ public class ProjectBean extends AbstractManagedBean implements Serializable {
 	 * 
 	 * @param actionEvent
 	 *          event from thefrom the client
-	 * @throws UserAccessException 
+	 * @throws UserAccessException
 	 */
 	public void updateSelectedProject(final ActionEvent actionEvent) throws UserAccessException {
 
diff --git a/web/src/test/java/lcsb/mapviewer/bean/DrugBeanTest.java b/web/src/test/java/lcsb/mapviewer/bean/DrugBeanTest.java
index 0b166cb8279899ed1aa8cbc33a0c71bd73945e17..76d1717af05ebb16921618a77c772c773646b597 100644
--- a/web/src/test/java/lcsb/mapviewer/bean/DrugBeanTest.java
+++ b/web/src/test/java/lcsb/mapviewer/bean/DrugBeanTest.java
@@ -12,7 +12,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.Pair;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
@@ -20,7 +19,6 @@ import lcsb.mapviewer.model.Project;
 import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.services.search.ElementIdentifierDetails;
 import lcsb.mapviewer.services.search.data.ElementIdentifier;
-import lcsb.mapviewer.services.view.AuthenticationToken;
 
 public class DrugBeanTest extends WebTestFunctions {
 
@@ -39,15 +37,15 @@ public class DrugBeanTest extends WebTestFunctions {
 		// commit at the end of the test case
 		dbUtils.createSessionForCurrentThread();
 
-		Project p = projectService.getProjectByProjectId(projectId,token);
+		Project p = projectService.getProjectByProjectId(projectId, adminToken);
 		if (p != null) {
-			projectService.removeProject(p, null, false, token);
+			projectService.removeProject(p, null, false, adminToken);
 		}
 	}
 
 	@After
 	public void tearDown() throws Exception {
-		Project p = projectService.getProjectByProjectId(projectId, token);
+		Project p = projectService.getProjectByProjectId(projectId, adminToken);
 		if (p != null) {
 			projectService.removeProject(p, null, false, adminToken);
 		}
@@ -86,10 +84,13 @@ public class DrugBeanTest extends WebTestFunctions {
 			projectDao.refresh(project);
 			model = project.getModels().iterator().next().getModel();
 
+			getUserBean().setAuthenticationToken(adminToken);
+			
 			// set current map
 			getMapBean().setCurrentMapId(project.getProjectId());
 
-			List<Pair<String, ElementIdentifierDetails>> result = drugBean.getElementInformationForResult(new ElementIdentifier(model.getElementByElementId("sa2"), ""));
+			List<Pair<String, ElementIdentifierDetails>> result = drugBean
+					.getElementInformationForResult(new ElementIdentifier(model.getElementByElementId("sa2"), ""));
 
 			assertTrue(result.size() > 0);
 
diff --git a/web/src/test/java/lcsb/mapviewer/bean/LayoutBeanTest.java b/web/src/test/java/lcsb/mapviewer/bean/LayoutBeanTest.java
index 12e6c96397546ec5f54462ae4a3a37489dd81e73..d6abe47c25902f60bb50f75050b3f46fac98fde2 100644
--- a/web/src/test/java/lcsb/mapviewer/bean/LayoutBeanTest.java
+++ b/web/src/test/java/lcsb/mapviewer/bean/LayoutBeanTest.java
@@ -14,6 +14,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.converter.ConverterParams;
 import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
 import lcsb.mapviewer.model.Project;
@@ -23,6 +24,7 @@ import lcsb.mapviewer.model.map.model.Model;
 import lcsb.mapviewer.model.user.BasicPrivilege;
 import lcsb.mapviewer.model.user.ObjectPrivilege;
 import lcsb.mapviewer.model.user.PrivilegeType;
+import lcsb.mapviewer.model.user.User;
 import lcsb.mapviewer.persist.dao.map.LayoutDao;
 import lcsb.mapviewer.services.view.ProjectView;
 
@@ -56,7 +58,7 @@ public class LayoutBeanTest extends WebTestFunctions {
 
 		createUser();
 
-		Project p = projectService.getProjectByProjectId(projectId, token);
+		Project p = projectService.getProjectByProjectId(projectId, adminToken);
 		if (p != null) {
 			projectService.removeProject(p, null, false, adminToken);
 		}
@@ -67,7 +69,7 @@ public class LayoutBeanTest extends WebTestFunctions {
 	public void tearDown() throws Exception {
 		userDao.delete(user);
 
-		Project p = projectService.getProjectByProjectId(projectId, token);
+		Project p = projectService.getProjectByProjectId(projectId, adminToken);
 		if (p != null) {
 			projectService.removeProject(p, null, false, adminToken);
 		}
@@ -100,9 +102,16 @@ public class LayoutBeanTest extends WebTestFunctions {
 			layoutBean.setLayoutFile(new File("testFiles/layout.txt"));
 
 			// set current map
+			getUserBean().setAuthenticationToken(adminToken);
 			mapBean.setCurrentMapId(project.getProjectId());
 			getMapBean().setCurrentMapId(project.getProjectId());
 
+			User guest = userService.getUserByLogin(Configuration.ANONYMOUS_LOGIN);  
+			// add user a privilege for viewing layouts
+			BasicPrivilege privilege = new ObjectPrivilege(project, 1, PrivilegeType.VIEW_PROJECT, guest);
+			userService.setUserPrivilege(guest, privilege);
+			userDao.flush();
+
 			// generate new layout
 			layoutBean.addAnonymousLayout(projectService.getProjectViewById(project.getId(), token));
 
@@ -148,6 +157,7 @@ public class LayoutBeanTest extends WebTestFunctions {
 
 			projectBean.refreshProjectList(null);
 
+			getUserBean().setAuthenticationToken(adminToken);
 			getMapBean().setCurrentMapId(projectId);
 			layoutBean.setLayoutFile(new File("testFiles/layout.txt"));
 
diff --git a/web/src/test/java/lcsb/mapviewer/bean/ProjectBeanTest.java b/web/src/test/java/lcsb/mapviewer/bean/ProjectBeanTest.java
index b6402196e5527798eaab295b7e9092e3c246692f..a958e652b7f813edd0818bc301af495432aca200 100644
--- a/web/src/test/java/lcsb/mapviewer/bean/ProjectBeanTest.java
+++ b/web/src/test/java/lcsb/mapviewer/bean/ProjectBeanTest.java
@@ -36,6 +36,8 @@ public class ProjectBeanTest extends WebTestFunctions {
 
 	String						 defaultMap;
 
+	String projectId = "Some_id";
+
 	@Autowired
 	ProjectViewFactory projectViewFactory;
 
@@ -58,6 +60,13 @@ public class ProjectBeanTest extends WebTestFunctions {
 	public void tearDown() throws Exception {
 		configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_MAP, defaultMap);
 
+		Project p = projectService.getProjectByProjectId(projectId, adminToken);
+		if (p != null) {
+			projectService.removeProject(p, null, false, adminToken);
+		}
+		// close session
+		dbUtils.closeSessionForCurrentThread();
+		
 		// close session
 		dbUtils.closeSessionForCurrentThread();
 	}
@@ -65,7 +74,6 @@ public class ProjectBeanTest extends WebTestFunctions {
 	@Test
 	public void testOnRemoveCheck() throws Exception {
 		try {
-			String projectId = "Some_id";
 			Project project = new Project();
 			project.setProjectId(projectId);
 			projectDao.add(project);
@@ -73,18 +81,19 @@ public class ProjectBeanTest extends WebTestFunctions {
 
 			configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_MAP, projectId);
 
-			ProjectView row = projectService.getProjectViewByProjectId(projectId, token);
+			ProjectView row = projectService.getProjectViewByProjectId(projectId, adminToken);
 
+			getUserBean().setAuthenticationToken(adminToken);
 			projectBean.setSelectedProject(row);
 			projectBean.removeSelectedProject(null);
 
-			assertNotNull(projectService.getProjectViewByProjectId(projectId, token));
+			assertNotNull(projectService.getProjectViewByProjectId(projectId, adminToken));
 
 			configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_MAP, "test bla");
 
 			projectBean.removeSelectedProject(null);
 
-			ProjectView pv = projectService.getProjectViewByProjectId(projectId, token);
+			ProjectView pv = projectService.getProjectViewByProjectId(projectId, adminToken);
 			if (pv != null && pv.getIdObject() != null) {
 				assertEquals(ProjectStatus.REMOVING.toString(), pv.getStatus());
 			}
@@ -97,15 +106,15 @@ public class ProjectBeanTest extends WebTestFunctions {
 	@Test(timeout = 15000)
 	public void testOnChangeCheck() throws Exception {
 		try {
-			String projectId = "Some_id";
 			Project project = new Project();
 			project.setProjectId(projectId);
 			projectDao.add(project);
 
 			configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_MAP, projectId);
 
-			ProjectView row = projectService.getProjectViewByProjectId(projectId, token);
+			ProjectView row = projectService.getProjectViewByProjectId(projectId, adminToken);
 
+			userBean.setAuthenticationToken(adminToken);
 			projectBean.setSelectedProject(row);
 
 			ProjectView row2 = new ProjectView(row);