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 db4b994f6c1b9ca1fc0bbfcdbfccd03734112b28..a00b4eeb22c989378fffaf9e910208d7fddfc3ab 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -627,7 +627,7 @@ public class ProjectService implements IProjectService {
       topLayout.setHierarchicalView(buildInLayout.isNested());
       topModel.addLayout(0, topLayout);
       List<Layout> semanticLevelOverlays = new ArrayList<>();
-      if (params.isSemanticZoomContainsMultipleLayouts()) {
+      if (params.isSemanticZoomContainsMultipleLayouts() && buildInLayout == BuildInLayout.NESTED) {
         for (int i = 0; i <= topModel.getZoomLevels(); i++) {
           String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-"
               + topModel.getId() + "/";
@@ -651,7 +651,7 @@ public class ProjectService implements IProjectService {
 
         connection.getSubmodel().setZoomLevels(generator.computeZoomLevels(connection.getSubmodel().getModel()));
         connection.getSubmodel().setTileSize(MapGenerator.TILE_SIZE);
-        if (params.isSemanticZoomContainsMultipleLayouts()) {
+        if (params.isSemanticZoomContainsMultipleLayouts() && buildInLayout == BuildInLayout.NESTED) {
           for (int i = 0; i <= topModel.getZoomLevels(); i++) {
             String directory = params.getProjectDir() + "/" + buildInLayout.getDirectorySuffix() + "-" + i + "-"
                 + submodelId + "/";
diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
index 73d4df551ad3c4985cebf845a492654479b511c4..f2662d31704357f1359dfde340fdf11a30dc1aa5 100644
--- a/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/impl/ProjectServiceTest.java
@@ -235,10 +235,10 @@ public class ProjectServiceTest extends ServiceTestFunctions {
       // and now check layouts (check if every submodel have them, and point
       // into different directory)
 
-      // there are 2 levels
-      int semanticOverlays = 2;
+      int semanticOverlays = model.getZoomLevels() + 1;
+      logger.debug(model.getZoomLevels());
       // -1 is due to pathways and compartments that is not there
-      int overlays = BuildInLayout.values().length + semanticOverlays - 1;
+      int overlays = BuildInLayout.values().length + semanticOverlays;
       assertEquals(overlays, model.getLayouts().size());
       assertEquals(overlays, s1Model.getLayouts().size());
       assertEquals(overlays, s2Model.getLayouts().size());
@@ -612,7 +612,7 @@ public class ProjectServiceTest extends ServiceTestFunctions {
       assertEquals("main", model.getName());
       assertEquals(ProjectStatus.DONE, project.getStatus());
       assertEquals("Cannot find overview images the model", 2, project.getOverviewImages().size());
-      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length - 1, model.getLayouts().size());
+      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length, model.getLayouts().size());
       assertEquals(BuildInLayout.NESTED.getTitle(), model.getLayouts().get(0).getTitle());
       assertEquals(BuildInLayout.NORMAL.getTitle(), model.getLayouts().get(1).getTitle());
       projectService.removeProject(project, null, false, adminToken);
@@ -663,7 +663,7 @@ public class ProjectServiceTest extends ServiceTestFunctions {
       assertEquals("main", model.getName());
       assertEquals(ProjectStatus.DONE, project.getStatus());
       assertEquals("Cannot find overview images the model", 2, project.getOverviewImages().size());
-      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length - 1, model.getLayouts().size());
+      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length, model.getLayouts().size());
       assertEquals(BuildInLayout.NESTED.getTitle(), model.getLayouts().get(1).getTitle());
       assertEquals(BuildInLayout.NORMAL.getTitle(), model.getLayouts().get(0).getTitle());
       projectService.removeProject(project, null, false, adminToken);
@@ -677,13 +677,15 @@ public class ProjectServiceTest extends ServiceTestFunctions {
   public void testCreateComplexWithLayouts() throws Exception {
     try {
       String filename = "testFiles/complexModel/complex_model_with_layouts.zip";
+      int overlaysInZipFile = 1;
       Project project = createComplexProject(projectId, filename);
 
       Model model = modelService.getLastModelByProjectId(projectId, adminToken);
       assertNotNull(model);
       assertEquals("main", model.getName());
       assertEquals(ProjectStatus.DONE, project.getStatus());
-      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length, model.getLayouts().size());
+      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length + overlaysInZipFile,
+          model.getLayouts().size());
       boolean additionalFound = false;
 
       for (Layout layout : model.getLayouts()) {
@@ -712,7 +714,7 @@ public class ProjectServiceTest extends ServiceTestFunctions {
       assertNotNull(model);
       assertEquals("main", model.getName());
       assertEquals(ProjectStatus.DONE, project.getStatus());
-      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length - 1, model.getLayouts().size());
+      assertEquals("Number of layouts doesn't match", BuildInLayout.values().length, model.getLayouts().size());
       projectService.removeProject(project, null, false, adminToken);
     } catch (Exception e) {
       e.printStackTrace();