diff --git a/README.md b/README.md
index 6d54ca5..7016a22 100755
--- a/README.md
+++ b/README.md
@@ -89,7 +89,7 @@
 
 ### Run Unit Tests
 * `cd ~/son-emu`
-* `sudo py.test -v src/emuvim` (equivalent to `python setup.py test -v --addopts 'src/emuvim'` but with direct access to the commandline arguments)
+* `sudo py.test -v src/emuvim/test/unittests`
 
 ### CLI
 * [Full CLI command documentation](https://github.com/sonata-nfv/son-emu/wiki/CLI-Command-Overview)
diff --git a/src/emuvim/test/__main__.py b/src/emuvim/test/__main__.py
deleted file mode 100755
index f7fa66d..0000000
--- a/src/emuvim/test/__main__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import runner
-import os
-
-
-if __name__ == '__main__':
-    thisdir = os.path.dirname( os.path.realpath( __file__ ) )
-    runner.main(thisdir)
diff --git a/src/emuvim/test/integrationtests/__init__.py b/src/emuvim/test/integrationtests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/emuvim/test/integrationtests/__init__.py
diff --git a/src/emuvim/test/runner.py b/src/emuvim/test/runner.py
deleted file mode 100755
index 469a99e..0000000
--- a/src/emuvim/test/runner.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Run all tests
- -v : verbose output
- -e : emulator test only (no API tests)
- -a : API tests only
-"""
-
-from unittest import defaultTestLoader, TextTestRunner, TestSuite
-import os
-import sys
-from mininet.util import ensureRoot
-from mininet.clean import cleanup
-from mininet.log import setLogLevel
-
-
-def runTests( testDir, verbosity=1, emuonly=False, apionly=False ):
-    "discover and run all tests in testDir"
-    # ensure inport paths work
-    sys.path.append("%s/.." % testDir)
-    # ensure root and cleanup before starting tests
-    ensureRoot()
-    cleanup()
-    # discover all tests in testDir
-    testSuite = defaultTestLoader.discover( testDir )
-    if emuonly:
-        testSuiteFiltered = [s for s in testSuite if "Emulator" in str(s)]
-        testSuite = TestSuite()
-        testSuite.addTests(testSuiteFiltered)
-    if apionly:
-        testSuiteFiltered = [s for s in testSuite if "Api" in str(s)]
-        testSuite = TestSuite()
-        testSuite.addTests(testSuiteFiltered)
-
-    # run tests
-    TextTestRunner( verbosity=verbosity ).run( testSuite )
-
-
-def main(thisdir):
-    setLogLevel( 'warning' )
-    # get the directory containing example tests
-    vlevel = 2 if '-v' in sys.argv else 1
-    emuonly = ('-e' in sys.argv)
-    apionly = ('-a' in sys.argv)
-    runTests(
-        testDir=thisdir, verbosity=vlevel, emuonly=emuonly, apionly=apionly)
-
-
-if __name__ == '__main__':
-    thisdir = os.path.dirname( os.path.realpath( __file__ ) )
-    main(thisdir)
diff --git a/src/emuvim/test/test_api_zerorpc.py b/src/emuvim/test/test_api_zerorpc.py
deleted file mode 100755
index 2830872..0000000
--- a/src/emuvim/test/test_api_zerorpc.py
+++ /dev/null
@@ -1 +0,0 @@
-#TODO we'll need this at some time. But I'am lazy. A good REST API seems to be more important.
diff --git a/src/emuvim/test/unittests/__init__.py b/src/emuvim/test/unittests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/emuvim/test/unittests/__init__.py
diff --git a/src/emuvim/test/test_emulator.py b/src/emuvim/test/unittests/test_emulator.py
similarity index 100%
rename from src/emuvim/test/test_emulator.py
rename to src/emuvim/test/unittests/test_emulator.py
diff --git a/src/emuvim/test/test_resourcemodel.py b/src/emuvim/test/unittests/test_resourcemodel.py
similarity index 98%
rename from src/emuvim/test/test_resourcemodel.py
rename to src/emuvim/test/unittests/test_resourcemodel.py
index a1d273c..165893d 100644
--- a/src/emuvim/test/test_resourcemodel.py
+++ b/src/emuvim/test/unittests/test_resourcemodel.py
@@ -1,5 +1,6 @@
 import time
 import os
+import unittest
 from emuvim.test.base import SimpleTestTopology
 from emuvim.dcemulator.resourcemodel import BaseResourceModel, ResourceFlavor, NotEnoughResourcesAvailable, ResourceModelRegistrar
 from emuvim.dcemulator.resourcemodel.upb.simple import UpbSimpleCloudDcRM, UpbOverprovisioningCloudDcRM, UpbDummyRM
@@ -211,15 +212,13 @@
         rm.free(c1)
         self.assertTrue(rm.dc_alloc_cu == 0)
 
+    @unittest.skipIf(os.environ.get("SON_EMU_IN_DOCKER") is not None,
+                     "skipping test when running inside Docker container")
     def testInRealTopo(self):
         """
         Start a real container and check if limitations are really passed down to Conteinernet.
         :return:
         """
-        # ATTENTION: This test should only be executed if emu runs not inside a Docker container,
-        # because it manipulates cgroups.
-        if os.environ.get("SON_EMU_IN_DOCKER") is not None:
-            return
         # create network
         self.createNet(nswitches=0, ndatacenter=1, nhosts=2, ndockers=0)
         # setup links
diff --git a/src/emuvim/test/test_sonata_dummy_gatekeeper.py b/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py
similarity index 81%
rename from src/emuvim/test/test_sonata_dummy_gatekeeper.py
rename to src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py
index 33a1d57..428a51f 100644
--- a/src/emuvim/test/test_sonata_dummy_gatekeeper.py
+++ b/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py
@@ -6,11 +6,12 @@
 from emuvim.test.base import SimpleTestTopology
 from emuvim.api.sonata import SonataDummyGatekeeperEndpoint
 
-
+PACKAGE_PATH = "misc/sonata-demo-docker.son"
 
 class testSonataDummyGatekeeper(SimpleTestTopology):
 
-    @unittest.skip("disabled test since ubuntu:trusty not used in current example package")
+    @unittest.skipIf(os.environ.get("SON_EMU_IN_DOCKER") is None,
+                     "skipping dummy GK test in local environment")
     def testAPI(self):
         # create network
         self.createNet(nswitches=0, ndatacenter=2, nhosts=2, ndockers=0)
@@ -28,22 +29,12 @@
         self.startNet()
         time.sleep(1)
 
-        # download example from GitHub
-        print "downloading latest son-demo.son from GitHub"
-        subprocess.call(
-            ["wget",
-             "http://github.com/sonata-nfv/son-schema/blob/master/package-descriptor/examples/sonata-demo.son?raw=true",
-             "-O",
-             "son-demo.son"]
-        )
-
         print "starting tests"
         # board package
-        files = {"package": open("son-demo.son", "rb")}
+        files = {"package": open(PACKAGE_PATH, "rb")}
         r = requests.post("http://127.0.0.1:5000/packages", files=files)
         self.assertEqual(r.status_code, 200)
         self.assertTrue(r.json().get("service_uuid") is not None)
-        os.remove("son-demo.son")
 
         # instantiate service
         service_uuid = r.json().get("service_uuid")
diff --git a/utils/ci/build_01_unit_tests.sh b/utils/ci/build_01_unit_tests.sh
index ab6ece3..5544503 100755
--- a/utils/ci/build_01_unit_tests.sh
+++ b/utils/ci/build_01_unit_tests.sh
@@ -10,4 +10,4 @@
 rm -rf utils/ci/junit-xml/*
 
 # Launch the unit testing on emuvim
-py.test -v --junit-xml=utils/ci/junit-xml/pytest_emuvim.xml src/emuvim
+py.test -v --junit-xml=utils/ci/junit-xml/pytest_emuvim.xml src/emuvim/test/unittests
diff --git a/utils/docker/Dockerfile b/utils/docker/Dockerfile
index 7270ab5..ef6c8fb 100644
--- a/utils/docker/Dockerfile
+++ b/utils/docker/Dockerfile
@@ -15,3 +15,5 @@
     && echo 'Done'
 
 ENTRYPOINT ["/son-emu/utils/docker/entrypoint.sh"]
+
+EXPORT
\ No newline at end of file
