diff --git a/gns3server/modules/iou/iou_vm.py b/gns3server/modules/iou/iou_vm.py
index 36e2e7c0..0ccbf376 100644
--- a/gns3server/modules/iou/iou_vm.py
+++ b/gns3server/modules/iou/iou_vm.py
@@ -345,6 +345,10 @@ class IOUVM(BaseVM):
         Checks for a valid IOU key in the iourc file (paranoid mode).
         """
 
+        license_check = self._manager.config.get_section_config("IOU").getboolean("license_check", False)
+        if license_check:
+            return
+
         config = configparser.ConfigParser()
         try:
             with open(self.iourc_path) as f:
@@ -401,10 +405,7 @@ class IOUVM(BaseVM):
             if iourc_path and not os.path.isfile(iourc_path):
                 raise IOUError("A valid iourc file is necessary to start IOU")
 
-            license_check = self._manager.config.get_section_config("IOU").getboolean("license_check", False)
-            if license_check:
-                yield from self._check_iou_licence()
-
+            yield from self._check_iou_licence()
             iouyap_path = self.iouyap_path
             if not iouyap_path or not os.path.isfile(iouyap_path):
                 raise IOUError("iouyap is necessary to start IOU")
diff --git a/gns3server/modules/virtualbox/virtualbox_vm.py b/gns3server/modules/virtualbox/virtualbox_vm.py
index d8c29afe..83dc86d3 100644
--- a/gns3server/modules/virtualbox/virtualbox_vm.py
+++ b/gns3server/modules/virtualbox/virtualbox_vm.py
@@ -155,7 +155,8 @@ class VirtualBoxVM(BaseVM):
             yield from self.set_adapters(self._adapters)
 
         vm_info = yield from self._get_vm_info()
-        self._ram = int(vm_info["memory"])
+        if "memory" in vm_info:
+            self._ram = int(vm_info["memory"])
 
     @asyncio.coroutine
     def start(self):
diff --git a/gns3server/schemas/project.py b/gns3server/schemas/project.py
index 38bea4c0..3e9dfa6d 100644
--- a/gns3server/schemas/project.py
+++ b/gns3server/schemas/project.py
@@ -53,7 +53,7 @@ PROJECT_UPDATE_SCHEMA = {
     "properties": {
         "name": {
             "description": "Project name",
-            "type": "string",
+            "type": ["string", "null"],
             "minLength": 1
         },
         "temporary": {
diff --git a/tests/handlers/api/test_project.py b/tests/handlers/api/test_project.py
index 659c78a8..cd0bc419 100644
--- a/tests/handlers/api/test_project.py
+++ b/tests/handlers/api/test_project.py
@@ -25,44 +25,49 @@ from tests.utils import asyncio_patch
 
 
 def test_create_project_with_path(server, tmpdir):
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
-        response = server.post("/projects", {"path": str(tmpdir)})
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
+        response = server.post("/projects", {"name": "test", "path": str(tmpdir)})
         assert response.status == 201
         assert response.json["path"] == str(tmpdir)
+        assert response.json["name"] == "test"
 
 
 def test_create_project_without_dir(server):
-    query = {}
+    query = {"name": "test"}
     response = server.post("/projects", query, example=True)
     assert response.status == 201
     assert response.json["project_id"] is not None
     assert response.json["temporary"] is False
+    assert response.json["name"] == "test"
 
 
 def test_create_temporary_project(server):
-    query = {"temporary": True}
+    query = {"name": "test", "temporary": True}
     response = server.post("/projects", query)
     assert response.status == 201
     assert response.json["project_id"] is not None
     assert response.json["temporary"] is True
+    assert response.json["name"] == "test"
 
 
 def test_create_project_with_uuid(server):
-    query = {"project_id": "00010203-0405-0607-0809-0a0b0c0d0e0f"}
+    query = {"name": "test", "project_id": "00010203-0405-0607-0809-0a0b0c0d0e0f"}
     response = server.post("/projects", query)
     assert response.status == 201
     assert response.json["project_id"] == "00010203-0405-0607-0809-0a0b0c0d0e0f"
+    assert response.json["name"] == "test"
 
 
 def test_show_project(server):
-    query = {"project_id": "00010203-0405-0607-0809-0a0b0c0d0e02", "temporary": False}
+    query = {"name": "test", "project_id": "00010203-0405-0607-0809-0a0b0c0d0e02", "temporary": False}
     response = server.post("/projects", query)
     assert response.status == 201
     response = server.get("/projects/00010203-0405-0607-0809-0a0b0c0d0e02", example=True)
-    assert len(response.json.keys()) == 4
+    assert len(response.json.keys()) == 5
     assert len(response.json["location"]) > 0
     assert response.json["project_id"] == "00010203-0405-0607-0809-0a0b0c0d0e02"
     assert response.json["temporary"] is False
+    assert response.json["name"] == "test"
 
 
 def test_show_project_invalid_uuid(server):
@@ -71,10 +76,10 @@ def test_show_project_invalid_uuid(server):
 
 
 def test_update_temporary_project(server):
-    query = {"temporary": True}
+    query = {"name": "test", "temporary": True}
     response = server.post("/projects", query)
     assert response.status == 201
-    query = {"temporary": False}
+    query = {"name": "test", "temporary": False}
     response = server.put("/projects/{project_id}".format(project_id=response.json["project_id"]), query, example=True)
     assert response.status == 200
     assert response.json["temporary"] is False
@@ -82,21 +87,23 @@ def test_update_temporary_project(server):
 
 def test_update_path_project(server, tmpdir):
 
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
-        response = server.post("/projects", {})
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
+        response = server.post("/projects", {"name": "first_name"})
         assert response.status == 201
-        query = {"path": str(tmpdir)}
+        assert response.json["name"] == "first_name"
+        query = {"name": "second_name", "path": str(tmpdir)}
         response = server.put("/projects/{project_id}".format(project_id=response.json["project_id"]), query, example=True)
         assert response.status == 200
         assert response.json["path"] == str(tmpdir)
+        assert response.json["name"] == "second_name"
 
 
 def test_update_path_project_non_local(server, tmpdir):
 
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": False}):
-        response = server.post("/projects", {})
+    with patch("gns3server.modules.project.Project.is_local", return_value=False):
+        response = server.post("/projects", {"name": "first_name"})
         assert response.status == 201
-        query = {"path": str(tmpdir)}
+        query = {"name": "second_name", "path": str(tmpdir)}
         response = server.put("/projects/{project_id}".format(project_id=response.json["project_id"]), query, example=True)
         assert response.status == 403
 
diff --git a/tests/modules/dynamips/test_dynamips_router.py b/tests/modules/dynamips/test_dynamips_router.py
index 48b76536..de5fb99d 100644
--- a/tests/modules/dynamips/test_dynamips_router.py
+++ b/tests/modules/dynamips/test_dynamips_router.py
@@ -44,10 +44,7 @@ def test_router(project, manager):
 
 
 def test_router_invalid_dynamips_path(project, manager, loop):
-    config = configparser.ConfigParser()
-    config.add_section("Dynamips")
-    config.set("Dynamips", "dynamips_path", "/bin/test_fake")
-    with patch("gns3server.config.Config", return_value=config):
+    with patch("gns3server.config.Config.get_section_config", return_value={"dynamips_path": "/bin/test_fake"}):
         with pytest.raises(DynamipsError):
             router = Router("test", "00010203-0405-0607-0809-0a0b0c0d0e0e", project, manager)
             loop.run_until_complete(asyncio.async(router.create()))
diff --git a/tests/modules/iou/test_iou_vm.py b/tests/modules/iou/test_iou_vm.py
index ced8f49c..a6ab2ab6 100644
--- a/tests/modules/iou/test_iou_vm.py
+++ b/tests/modules/iou/test_iou_vm.py
@@ -85,11 +85,12 @@ def test_vm_invalid_iouyap_path(project, manager, loop):
 def test_start(loop, vm, monkeypatch):
 
     with patch("gns3server.modules.iou.iou_vm.IOUVM._check_requirements", return_value=True):
-        with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_ioucon", return_value=True):
-            with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_iouyap", return_value=True):
-                with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()):
-                    loop.run_until_complete(asyncio.async(vm.start()))
-                    assert vm.is_running()
+        with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._check_iou_licence", return_value=True):
+            with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_ioucon", return_value=True):
+                with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_iouyap", return_value=True):
+                    with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()):
+                        loop.run_until_complete(asyncio.async(vm.start()))
+                        assert vm.is_running()
 
 
 def test_start_with_iourc(loop, vm, monkeypatch, tmpdir):
@@ -100,13 +101,14 @@ def test_start_with_iourc(loop, vm, monkeypatch, tmpdir):
 
     with patch("gns3server.config.Config.get_section_config", return_value={"iourc_path": fake_file, "iouyap_path": vm.iouyap_path}):
         with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._check_requirements", return_value=True):
-            with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_ioucon", return_value=True):
-                with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_iouyap", return_value=True):
-                    with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()) as exec_mock:
-                        loop.run_until_complete(asyncio.async(vm.start()))
-                        assert vm.is_running()
-                        arsgs, kwargs = exec_mock.call_args
-                        assert kwargs["env"]["IOURC"] == fake_file
+            with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._check_iou_licence", return_value=True):
+                with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_ioucon", return_value=True):
+                    with asyncio_patch("gns3server.modules.iou.iou_vm.IOUVM._start_iouyap", return_value=True):
+                        with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()) as exec_mock:
+                            loop.run_until_complete(asyncio.async(vm.start()))
+                            assert vm.is_running()
+                            arsgs, kwargs = exec_mock.call_args
+                            assert kwargs["env"]["IOURC"] == fake_file
 
 
 def test_rename_nvram_file(loop, vm, monkeypatch):
diff --git a/tests/modules/test_manager.py b/tests/modules/test_manager.py
index 5efa1e33..81a2ddf0 100644
--- a/tests/modules/test_manager.py
+++ b/tests/modules/test_manager.py
@@ -60,7 +60,7 @@ def test_create_vm_new_topology_without_uuid(loop, project, port_manager):
 
 def test_create_vm_old_topology(loop, project, tmpdir, port_manager):
 
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
         # Create an old topology directory
         project_dir = str(tmpdir / "testold")
         vm_dir = os.path.join(project_dir, "testold-files", "vpcs", "pc-1")
diff --git a/tests/modules/test_project.py b/tests/modules/test_project.py
index 7fdaf487..60ec1765 100644
--- a/tests/modules/test_project.py
+++ b/tests/modules/test_project.py
@@ -20,7 +20,6 @@ import os
 import asyncio
 import pytest
 import aiohttp
-import shutil
 from uuid import uuid4
 from unittest.mock import patch
 
@@ -51,7 +50,7 @@ def test_affect_uuid():
 
 
 def test_path(tmpdir):
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
         p = Project(location=str(tmpdir))
         assert p.path == os.path.join(str(tmpdir), p.id)
         assert os.path.exists(os.path.join(str(tmpdir), p.id))
@@ -60,14 +59,14 @@ def test_path(tmpdir):
 
 def test_init_path(tmpdir):
 
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
         p = Project(path=str(tmpdir))
         assert p.path == str(tmpdir)
 
 
 def test_changing_path_temporary_flag(tmpdir):
 
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
         p = Project(temporary=True)
         assert os.path.exists(p.path)
         assert os.path.exists(os.path.join(p.path, ".gns3_temporary"))
@@ -96,13 +95,13 @@ def test_remove_temporary_flag():
 
 
 def test_changing_location_not_allowed(tmpdir):
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": False}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=False):
         with pytest.raises(aiohttp.web.HTTPForbidden):
             p = Project(location=str(tmpdir))
 
 
 def test_changing_path_not_allowed(tmpdir):
-    with patch("gns3server.config.Config.getboolean", return_value=False):
+    with patch("gns3server.modules.project.Project.is_local", return_value=False):
         with pytest.raises(aiohttp.web.HTTPForbidden):
             p = Project()
             p.path = str(tmpdir)
@@ -110,11 +109,11 @@ def test_changing_path_not_allowed(tmpdir):
 
 def test_json(tmpdir):
     p = Project()
-    assert p.__json__() == {"location": p.location, "path": p.path, "project_id": p.id, "temporary": False}
+    assert p.__json__() == {"name": p.name, "location": p.location, "path": p.path, "project_id": p.id, "temporary": False}
 
 
 def test_vm_working_directory(tmpdir, vm):
-    with patch("gns3server.config.Config.get_section_config", return_value={"local": True}):
+    with patch("gns3server.modules.project.Project.is_local", return_value=True):
         p = Project(location=str(tmpdir))
         assert p.vm_working_directory(vm) == os.path.join(str(tmpdir), p.id, 'project-files', vm.module_name, vm.id)
         assert os.path.exists(p.vm_working_directory(vm))