diff --git a/CMakeLists.txt b/CMakeLists.txt
index 853f85698c96c64d7edafd7fbd34c2e7bf33090c..54f625931a12b0b4ec502bc22a822625692bcfb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -150,10 +150,17 @@ endif (${COMPILE_PACKAGING} STREQUAL "1")
 #                    COMMENT "Not running the unit tests" VERBATIM)
 
 configure_file(tests/valgrind.suppr tests/valgrind.suppr COPYONLY)
-add_custom_target(unittests
-  tests/unitTests
-  COMMAND valgrind --track-fds=yes --leak-check=full --demangle=yes --gen-suppressions=all --show-reachable=yes --error-exitcode=1 --suppressions=tests/valgrind.suppr tests/unitTests
-  COMMAND valgrind --tool=helgrind -v --demangle=no --conflict-cache-size=30000000 --error-exitcode=1 tests/unitTests 
+configure_file(tests/helgrind.suppr tests/helgrind.suppr COPYONLY)
+add_custom_target(fullunittests
+  tests/cta-unitTests
+  COMMAND valgrind --track-fds=yes --leak-check=full --demangle=yes --gen-suppressions=all --show-reachable=yes --error-exitcode=1 --suppressions=tests/valgrind.suppr tests/cta-unitTests
+  COMMAND valgrind --tool=helgrind -v --demangle=yes --gen-suppressions=all --conflict-cache-size=30000000 --error-exitcode=1 --suppressions=tests/helgrind.suppr tests/cta-unitTests
+  
+  DEPENDS tests/cta-unitTests tests/valgrind.suppr tests/helgrind.suppr
+  COMMENT "Running unit tests with memory leak and race conditions detection" VERBATIM)
 
-  DEPENDS tests/unittests tests/valgrind.suppr
+add_custom_target(shortunittests
+  tests/cta-unitTests
+  
+  DEPENDS tests/cta-unitTests
   COMMENT "Running unit tests" VERBATIM)
diff --git a/catalogue/CMakeLists.txt b/catalogue/CMakeLists.txt
index e5d3a2ee82020d35040cef068b9cced2b9a60924..6b697726a1eed00e749fef7c761d4e9660d263ed 100644
--- a/catalogue/CMakeLists.txt
+++ b/catalogue/CMakeLists.txt
@@ -27,3 +27,5 @@ add_library (ctacatalogueunittests SHARED
   ${CATALOGUE_UNIT_TESTS_LIB_SRC_FILES})
 
 target_link_libraries (ctacatalogueunittests ctacatalogue)
+
+install(TARGETS ctacatalogueunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index c48a13d9d8956678072eea9c0637d5a044fd5545..389633b910b2819daa4b0497e1ee3c6d4633af59 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -113,3 +113,5 @@ set (COMMON_UNIT_TESTS_LIB_SRC_FILES
 
 add_library (ctacommonunittests SHARED
   ${COMMON_UNIT_TESTS_LIB_SRC_FILES})
+
+install(TARGETS ctacommonunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
\ No newline at end of file
diff --git a/cta.spec.in b/cta.spec.in
index 686e4d400f3e451b2b5758c2e51e5159c08820e4..ce75b04c09defbc0a0b153d5c915c1811406ffbf 100644
--- a/cta.spec.in
+++ b/cta.spec.in
@@ -26,7 +26,7 @@ Source: %{name}-%{ctaVersion}-%{ctaRelease}.tar.gz
 License: http://cern.ch/castor/DIST/CONDITIONS
 Group: Application/cta
 BuildRoot: %{_builddir}/%{name}-%{version}-root
-BuildRequires: cmake >= 2.6 redhat-rpm-config spaceMonkey2000-devel
+BuildRequires: cmake >= 2.6 redhat-rpm-config
 # only build debug info if you're building the whole code
 
 %description
@@ -58,25 +58,25 @@ cd build
 %check
 %if "%{skip_unit_tests}" == "0"
 cd build
-%{__make} test
+%{__make} shortunittests
 %endif
 
 # The packages will be cta-tapeserver, cta-frontend, cta-cli
 
-%package -n cta-tapeserver
-Summary: CERN Tape Archive
+%package -n cta-taped
+Summary: CERN Tape Archive: tape daemon
 Group: Application/CTA
 requires: cta-lib
-%description -n cta-tapeserver
+%description -n cta-taped
 CERN Tape Archive:
 The tape server daemon
-%files -n cta-tapeserver
+%files -n cta-taped
 %defattr(-,root,root)
-%attr(0755,root,root) %{_bindir}/cta-tapeserverd
+%attr(0755,root,root) %{_bindir}/cta-taped
 %attr(0755,root,root) %{_libdir}/libctamessages.so
 
 %package -n cta-frontend
-Summary: CERN Tape Archive
+Summary: CERN Tape Archive: Xrootd plugin
 Group: Application/CTA
 requires: cta-lib
 %description -n cta-frontend
@@ -88,7 +88,7 @@ The xroot plugin
 %attr(0644,root,root) %config(noreplace) %{_sysconfdir}/xrd.cf.cta
 
 %package -n cta-cli
-Summary: CERN Tape Archive
+Summary: CERN Tape Archive: command line interface
 Group: Application/CTA
 %description -n cta-cli
 CERN Tape Archive:
@@ -98,6 +98,7 @@ The xroot plugin
 %attr(0755,root,root) %{_bindir}/cta
 %attr(0755,root,root) %{_bindir}/ctaAddAdminUser
 
+
 %package -n cta-lib
 Summary: CERN Tape Archive
 Group: Application/CTA
@@ -110,4 +111,49 @@ The shared libraries
 %attr(0755,root,root) %{_libdir}/libctanameserver.so
 %attr(0755,root,root) %{_libdir}/libctaremotens.so
 %attr(0755,root,root) %{_libdir}/libctascheduler.so
-%attr(0755,root,root) %{_libdir}/libctaobjectstore.so
\ No newline at end of file
+%attr(0755,root,root) %{_libdir}/libctaobjectstore.so
+%attr(0755,root,root) %{_libdir}/libctamediachangerutils.so
+%attr(0755,root,root) %{_libdir}/libctamessages.so
+%attr(0755,root,root) %{_libdir}/libctamessagesutils.so
+%attr(0755,root,root) %{_libdir}/libctatapereactorutils.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverdaemonutils.so
+
+%package -n cta-unittests
+Summary: CERN Tape Archive: unit tests
+Group: Application/CTA
+%description -n cta-unittests
+CERN Tape Archive:
+unit tests
+%files -n cta-unittests
+%attr(0755,root,root) %{_bindir}/cta-unitTests
+%attr(0755,root,root) %{_bindir}/cta-valgrindUnitTests.sh
+%attr(0755,root,root) %{_libdir}/libctacatalogueunittests.so
+%attr(0755,root,root) %{_libdir}/libctacommonunittests.so
+%attr(0755,root,root) %{_libdir}/libctaexceptionunittests.so
+%attr(0755,root,root) %{_libdir}/libctaiounittests.so
+%attr(0755,root,root) %{_libdir}/libctalegacymsgunittests.so
+%attr(0755,root,root) %{_libdir}/libctamessagesunittests.so
+%attr(0755,root,root) %{_libdir}/libctanameserverunittests.so
+%attr(0755,root,root) %{_libdir}/libctaobjectstoreunittests.so
+%attr(0755,root,root) %{_libdir}/libctaremotensunittests.so
+%attr(0755,root,root) %{_libdir}/libctaschedulerunittests.so
+%attr(0755,root,root) %{_libdir}/libctaserverunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapereactorunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverdaemonunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverdriveunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverfileunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverscsiunittests.so
+%attr(0755,root,root) %{_libdir}/libctatapeserverutilsunittests.so
+%attr(0755,root,root) %{_libdir}/libctautilsunittests.so
+%attr(0644,root,root) %{_datadir}/%{name}-%{ctaVersion}/unittest/*.suppr
+
+
+%package -n cta-systemtests
+Summary: CERN Tape Archive: system tests with virtual tape drives
+Group: Application/CTA
+%description -n cta-systemtests
+CERN Tape Archive:
+system tests with virtual tape drives
+%files -n cta-systemtests
+%attr(0755,root,root) %{_bindir}/cta-systemTests
+%attr(0755,root,root) %{_libdir}/libsystemTestHelperTests.so
diff --git a/nameserver/CMakeLists.txt b/nameserver/CMakeLists.txt
index 23a75ef08e7ee2ba2ae9d85c4d2d937e5a5ac5b9..56320e2e0d830b5e9e0d9768df2c673e52734a8a 100644
--- a/nameserver/CMakeLists.txt
+++ b/nameserver/CMakeLists.txt
@@ -21,5 +21,7 @@ add_library (ctanameserverunittests SHARED
 target_link_libraries(ctanameserverunittests
   ctanameserver)
 
+install(TARGETS ctanameserverunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
 add_executable(makeMockNameServerBasePath mockNS/makeMockNameServerBasePath.cpp)
 target_link_libraries(makeMockNameServerBasePath ctacommon)
\ No newline at end of file
diff --git a/objectstore/CMakeLists.txt b/objectstore/CMakeLists.txt
index 641b6cf52723171267aba2d9ae67075d454a85ef..bd4b3795a1cfcd6b16ace63d0916350fa0a4821d 100644
--- a/objectstore/CMakeLists.txt
+++ b/objectstore/CMakeLists.txt
@@ -65,6 +65,7 @@ set(ObjectStoreUnitTests
 add_library(ctaobjectstoreunittests SHARED ${ObjectStoreUnitTests})
 target_link_libraries(ctaobjectstoreunittests
   protobuf rados ctacommon gtest ctaobjectstore)
+install(TARGETS ctaobjectstoreunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
 
 add_executable(makeMinimalVFS makeMinimalVFS.cpp)
 target_link_libraries(makeMinimalVFS
diff --git a/remotens/CMakeLists.txt b/remotens/CMakeLists.txt
index 3b161a0f54b6f509cfba1c673d58604936479b11..4fc8ab2d8873568053a4e53917f42da69d1537a4 100644
--- a/remotens/CMakeLists.txt
+++ b/remotens/CMakeLists.txt
@@ -25,3 +25,5 @@ add_library (ctaremotensunittests SHARED
 target_link_libraries(ctaremotensunittests
   ctaremotens
   ctautils)
+
+install(TARGETS ctaremotensunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/scheduler/CMakeLists.txt b/scheduler/CMakeLists.txt
index 0ecca9dc3d771e52637bb254ec04b50a099130f3..12658dbe2d754bd2766d7a506494f7746bc02c75 100644
--- a/scheduler/CMakeLists.txt
+++ b/scheduler/CMakeLists.txt
@@ -47,7 +47,8 @@ add_library (ctaschedulerunittests SHARED
   SchedulerDatabaseFactory.cpp
   SchedulerDatabaseTest.cpp)
 
-target_link_libraries (ctaschedulerunittests ${SQLITE3_LIBRARY_RELEASE})
-
-target_link_libraries(ctaschedulerunittests
+target_link_libraries (ctaschedulerunittests 
+  ${SQLITE3_LIBRARY_RELEASE}
   ctascheduler)
+
+install(TARGETS ctaschedulerunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
\ No newline at end of file
diff --git a/tapeserver/CMakeLists.txt b/tapeserver/CMakeLists.txt
index 8984496ca8b569facacfacd319927ccd4d5cbf23..aca7a237950017bd61da6eab0b731c117dcd501b 100644
--- a/tapeserver/CMakeLists.txt
+++ b/tapeserver/CMakeLists.txt
@@ -10,3 +10,4 @@ add_subdirectory (daemon)
 add_executable (cta-taped cta-taped.cpp)
 target_link_libraries(cta-taped
   ctatapedaemon ctacommon protobuf)
+install (TARGETS cta-taped DESTINATION usr/bin)
diff --git a/tapeserver/castor/exception/CMakeLists.txt b/tapeserver/castor/exception/CMakeLists.txt
index d7fac4395108e95f5fd1e583724c33cdeb68d263..4ff3dc9cd6cc056d69cfd435af6c21947b49957b 100644
--- a/tapeserver/castor/exception/CMakeLists.txt
+++ b/tapeserver/castor/exception/CMakeLists.txt
@@ -4,3 +4,5 @@ include_directories(${PROJECT_SOURCE_DIR}/tapeserver)
 
 add_library (ctaexceptionunittests SHARED
   ExceptionTest.cpp)
+
+install(TARGETS ctaexceptionunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/io/CMakeLists.txt b/tapeserver/castor/io/CMakeLists.txt
index e82f41f3e4dcb33df75c6fbbc9886e65e4916033..c7e73debaae1dd44185d2e09daa6692ed65b2ec9 100644
--- a/tapeserver/castor/io/CMakeLists.txt
+++ b/tapeserver/castor/io/CMakeLists.txt
@@ -11,3 +11,5 @@ add_library (ctaiounittests SHARED
   IoTest.cpp)
 target_link_libraries (ctaiounittests
   ctaio)
+
+install(TARGETS ctaiounittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/legacymsg/CMakeLists.txt b/tapeserver/castor/legacymsg/CMakeLists.txt
index ad70f4b8788c6df3a80f3f460d99e0f2daea881b..95ed008cf93e35619445b29efe0c38bdffae5b05 100644
--- a/tapeserver/castor/legacymsg/CMakeLists.txt
+++ b/tapeserver/castor/legacymsg/CMakeLists.txt
@@ -30,3 +30,4 @@ add_library (ctalegacymsgunittests SHARED
 target_link_libraries (ctalegacymsgunittests
   ctamessages
   ctautils)
+install(TARGETS ctalegacymsgunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/mediachanger/CMakeLists.txt b/tapeserver/castor/mediachanger/CMakeLists.txt
index b49f3bc111e0660f73b58793b889ecb10b8ad371..1edd47be2960b5558a301ad47ee9d8b4a6e00183 100644
--- a/tapeserver/castor/mediachanger/CMakeLists.txt
+++ b/tapeserver/castor/mediachanger/CMakeLists.txt
@@ -36,3 +36,4 @@ add_library(ctamediachanger ${MEDIA_CHANGER_LIB_SRC_FILES})
 
 add_library(ctamediachangerutils SHARED
   MmcProxyDummy.cpp)
+install(TARGETS ctamediachangerutils DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/messages/CMakeLists.txt b/tapeserver/castor/messages/CMakeLists.txt
index e41a1a84b931d447f47d106be6fe5c2f8176e747..5cee9e4af6141c2afa18f8deca7d6ea537a9e680 100644
--- a/tapeserver/castor/messages/CMakeLists.txt
+++ b/tapeserver/castor/messages/CMakeLists.txt
@@ -34,6 +34,7 @@ add_library(ctamessagesprotobuf
 add_library(ctamessagesutils SHARED
   AcsProxyDummy.cpp
   TapeserverProxyDummy.cpp)
+install(TARGETS ctamessagesutils DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
 
 set(CtaMessageSrcs
   AcsProxy.cpp
@@ -70,3 +71,4 @@ add_library(ctamessagesunittests SHARED
   MessagesTest.cpp
   MutexLockerTest.cpp
   MutexTest.cpp)
+install(TARGETS ctamessagesunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/server/CMakeLists.txt b/tapeserver/castor/server/CMakeLists.txt
index a79374d4066a60b48ae23db7d8dff4e0314dd705..1d5c67e172036842207928d079a0aab62e3c9a3f 100644
--- a/tapeserver/castor/server/CMakeLists.txt
+++ b/tapeserver/castor/server/CMakeLists.txt
@@ -24,3 +24,5 @@ add_library (ctaserverunittests SHARED
   ThreadingTests.cpp)
 
 target_link_libraries (ctaserverunittests)
+
+install(TARGETS ctaserverunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/server/Semaphores.cpp b/tapeserver/castor/server/Semaphores.cpp
index 4ad79704b8cc9f6855f89d7ef79dc22138ad488f..d75da972c73451f044605cd5ee374edfe8f5f9a6 100644
--- a/tapeserver/castor/server/Semaphores.cpp
+++ b/tapeserver/castor/server/Semaphores.cpp
@@ -106,7 +106,8 @@ castor::server::CondVarSemaphore::~CondVarSemaphore() {
       pthread_mutex_lock(&m_mutex);
       pthread_mutex_unlock(&m_mutex);
       /* Cleanup */
-      pthread_cond_destroy(&m_cond);
+      int rc=pthread_cond_destroy(&m_cond);
+      rc=rc;
       pthread_mutex_destroy(&m_mutex);
     }
 //------------------------------------------------------------------------------
diff --git a/tapeserver/castor/tape/reactor/CMakeLists.txt b/tapeserver/castor/tape/reactor/CMakeLists.txt
index 35e995351e3a679215ff90888dc1b4eac618d222..68b65765a9a3c1b723564bf9bf904981a04e8ce3 100644
--- a/tapeserver/castor/tape/reactor/CMakeLists.txt
+++ b/tapeserver/castor/tape/reactor/CMakeLists.txt
@@ -38,10 +38,14 @@ add_library (ctatapereactorutils SHARED
   DummyPollReactor.cpp
   DummyZMQReactor.cpp)
 
+install(TARGETS ctatapereactorutils DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
 add_library (ctatapereactorunittests SHARED
   PollReactorImplTest.cpp
   ZMQReactorTest.cpp)
 
+install(TARGETS ctatapereactorunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
 target_link_libraries (ctatapereactorunittests
   ctatapereactor
   ctatapereactorutils)
diff --git a/tapeserver/castor/tape/tapeserver/SCSI/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/SCSI/CMakeLists.txt
index 7320b7986c8bb868fb25d8ec2a5f08c5a124876b..7744792294f324c9b347b49b9914c6d7cbca00b4 100644
--- a/tapeserver/castor/tape/tapeserver/SCSI/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/SCSI/CMakeLists.txt
@@ -37,3 +37,5 @@ add_library(SCSI Device.cpp Structures.cpp Constants.cpp Exception.cpp)
 add_library(ctatapeserverscsiunittests SHARED
   DeviceTest.cpp
   StructuresTest.cpp)
+
+install(TARGETS ctatapeserverscsiunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
index 8b2064bf203c873321b54e3aaafaf8fa2cdc7f20..1572dfc458f7a0ceb9da1d58eb5ad4bb8175e0ad 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/daemon/CMakeLists.txt
@@ -101,11 +101,13 @@ add_executable(cta-tapeserverd TapeDaemon.cpp)
 target_link_libraries(cta-tapeserverd ctaTapeServerDaemon SCSI System Utils 
   File TapeDrive ctacommon ctatapereactor ${LIBCAP_LIB} ${ZLIB_LIBRARIES} 
   ctamessages zmq ctaio ctautils ctaserverutils)
-install (TARGETS cta-tapeserverd DESTINATION usr/bin)
+#install (TARGETS cta-tapeserverd DESTINATION usr/bin)
 
 add_library(ctatapeserverdaemonutils SHARED
   ProcessForkerProxyDummy.cpp)
 
+install(TARGETS ctatapeserverdaemonutils DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
 add_library(ctatapeserverdaemonunittests SHARED
   CatalogueDriveStateTest.cpp
   CatalogueTest.cpp
@@ -129,3 +131,5 @@ target_link_libraries(ctatapeserverdaemonunittests
   ctaserverutils
   ctatapeserverdaemonutils)
   #ctaschedulerutils
+
+install(TARGETS ctatapeserverdaemonunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/tape/tapeserver/drive/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/drive/CMakeLists.txt
index 790f962451fecf2469fb3a775a07b0ecbce98362..10e04c424966aaf672c9e96add51fe403e02ed2e 100644
--- a/tapeserver/castor/tape/tapeserver/drive/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/drive/CMakeLists.txt
@@ -73,3 +73,5 @@ target_link_libraries(ctatapeserverdriveunittests
   System
   TapeDrive
   ctautils)
+
+install(TARGETS ctatapeserverdriveunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
index cc9fddf859b85e19dbf1b23d27f1ffd8e0462737..f968eb00f4995b863123122255995d13cccfe6eb 100644
--- a/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/file/CMakeLists.txt
@@ -59,3 +59,6 @@ add_library(ctatapeserverfileunittests SHARED
 
 target_link_libraries(ctatapeserverfileunittests
   File)
+
+install(TARGETS ctatapeserverfileunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
diff --git a/tapeserver/castor/tape/tapeserver/utils/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/utils/CMakeLists.txt
index b2b27860704d2ae5dd79b9e61527bfd36ef04a56..8326f0c87a0dfcffc14dc43e755532593c84a2c1 100644
--- a/tapeserver/castor/tape/tapeserver/utils/CMakeLists.txt
+++ b/tapeserver/castor/tape/tapeserver/utils/CMakeLists.txt
@@ -27,3 +27,6 @@ add_library (ctatapeserverutilsunittests SHARED
 
 target_link_libraries (ctatapeserverutilsunittests
   Utils)
+
+install(TARGETS ctatapeserverutilsunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
diff --git a/tapeserver/castor/utils/CMakeLists.txt b/tapeserver/castor/utils/CMakeLists.txt
index 81ed0cd4126aa41ae17ee153f852bc464391fbc2..2e2048222783f8fe895a6b3d89273237bef29213 100644
--- a/tapeserver/castor/utils/CMakeLists.txt
+++ b/tapeserver/castor/utils/CMakeLists.txt
@@ -51,3 +51,5 @@ add_library (ctautilsunittests SHARED
   SmartArrayPtrTest.cpp
   SmartFdTest.cpp
   UtilsTest.cpp)
+
+install(TARGETS ctautilsunittests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
diff --git a/tapeserver/cta-tapedSystemtests.cpp b/tapeserver/cta-tapedSystemtests.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/tapeserver/cta-tapedSystemtests.cpp
@@ -0,0 +1 @@
+
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 523ff5d01e3c22f2b363a36b4f6f0241642e2dd6..27fbd0c8c4e08c127ba9749d576dc029d31e19ab 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -17,11 +17,11 @@ cmake_minimum_required (VERSION 2.6)
 
 find_package(gmock REQUIRED)
 
-add_executable(unitTests
+add_executable(cta-unitTests
   unit_tests.cpp
   ${GMOCK_SRC})
 
-target_link_libraries(unitTests
+target_link_libraries(cta-unitTests
   ctacatalogueunittests
   ctaexceptionunittests
   ctaiounittests
@@ -57,14 +57,21 @@ target_link_libraries(systemTestHelperTests
   systemTestHelper
   ctacommon)
 
-add_executable(systemTests
+add_executable(cta-systemTests
   system_tests.cpp
   ${GMOCK_SRC})
 
-target_link_libraries(systemTests
+target_link_libraries(cta-systemTests
   systemTestHelper
   systemTestHelperTests
   gtest
   pthread)
 
+install(TARGETS cta-unitTests cta-systemTests DESTINATION usr/bin)
 
+install(TARGETS systemTestHelperTests DESTINATION usr/${CMAKE_INSTALL_LIBDIR})
+
+configure_file(cta-valgrindUnitTests.sh.in ${CMAKE_CURRENT_BINARY_DIR}/cta-valgrindUnitTests.sh)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cta-valgrindUnitTests.sh DESTINATION usr/bin)
+install(FILES valgrind.suppr helgrind.suppr DESTINATION usr/share/cta-${CTA_VERSION}/unittest/)
diff --git a/tests/Subprocess.cpp b/tests/Subprocess.cpp
index 3b2851a037bafface049973e30fcc0ce711bb13a..00d9c9ce33466e60069ea3bd5470c48cfc9041cb 100644
--- a/tests/Subprocess.cpp
+++ b/tests/Subprocess.cpp
@@ -72,7 +72,8 @@ Subprocess::Subprocess(const std::string & executable, const std::list<std::stri
       }
       cargv[argv.size()] = NULL;
       cta::exception::Errnum::throwOnMinusOne(
-          execvp(executable.c_str(), cargv));
+          execvp(executable.c_str(), cargv),
+          "In Subprocess::Subprocess execv failed: ");
       // We should never get here.
       throw cta::exception::Exception(
           "In Subprocess::Subprocess execv failed without returning -1!");
@@ -81,7 +82,7 @@ Subprocess::Subprocess(const std::string & executable, const std::list<std::stri
       exit(EXIT_FAILURE);
     }
   }
-  }
+}
 
 void Subprocess::kill(int signal) {
   ::kill(m_child, signal);
@@ -128,4 +129,4 @@ Subprocess::~Subprocess() {
 }
 
 
-}
\ No newline at end of file
+} // namespace systemTests
\ No newline at end of file
diff --git a/tests/SubprocessSystemTests.cpp b/tests/SubprocessSystemTests.cpp
index 6c1cb26f2885a355ba021803084ad2ce8177ab85..77916e6c373dfb961d6b6d06665d1a7cdc199dc0 100644
--- a/tests/SubprocessSystemTests.cpp
+++ b/tests/SubprocessSystemTests.cpp
@@ -32,5 +32,10 @@ TEST(SuprocessHelper, basicTests) {
   ASSERT_EQ("", sp2.stdout());
   ASSERT_NE(std::string::npos, sp2.stderr().find("/no/such/file"));
   ASSERT_EQ(1, sp2.exitValue());
+  Subprocess sp3("/no/such/file", std::list<std::string>({"/no/such/file"}));
+  sp3.wait();
+  ASSERT_EQ("", sp3.stdout());
+  ASSERT_NE(std::string::npos, sp3.stderr().find("In Subprocess::Subprocess execv failed"));
+  ASSERT_EQ(1, sp3.exitValue());
 }
 }
\ No newline at end of file
diff --git a/tests/cta-valgrindUnitTests.sh.in b/tests/cta-valgrindUnitTests.sh.in
new file mode 100644
index 0000000000000000000000000000000000000000..64f644db475dd0bcbed59ebf910cddeadd0a1a47
--- /dev/null
+++ b/tests/cta-valgrindUnitTests.sh.in
@@ -0,0 +1,12 @@
+#!/bin/bash
+# exit from the script on any error.
+set -e
+/usr/bin/cta-unitTests --gtest_color=yes
+
+valgrind --track-fds=yes --leak-check=full --demangle=yes --gen-suppressions=all --show-reachable=yes \
+  --error-exitcode=1 --suppressions=/usr/share/cta-@CTA_VERSION@/unittest/valgrind.suppr              \
+  /usr/bin/cta-unitTests --gtest_color=yes 
+
+valgrind --tool=helgrind -v --demangle=yes --gen-suppressions=all --conflict-cache-size=30000000      \
+  --error-exitcode=1 --suppressions=/usr/share/cta-@CTA_VERSION@/unittest/helgrind.suppr              \
+  /usr/bin/cta-unitTests --gtest_color=yes
diff --git a/tests/helgrind.suppr b/tests/helgrind.suppr
new file mode 100644
index 0000000000000000000000000000000000000000..e38e428bb9b93ac51ce8689a5f4eb2d0ec8c7597
--- /dev/null
+++ b/tests/helgrind.suppr
@@ -0,0 +1,99 @@
+{
+   liblttnq1
+   Helgrind:Race
+   fun:lttng_ust_init
+   obj:/usr/lib64/liblttng-ust.so.0.0.0
+   obj:/usr/lib64/liblttng-ust.so.0.0.0
+}
+
+{
+   pthread_tests1
+   Helgrind:Misc
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_tape_threading*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_tests2
+   Helgrind:UnlockUnlocked
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_tape_threading*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_tests3
+   Helgrind:PthAPIerror
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_tape_threading*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_tests4
+   Helgrind:Misc
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_messages_Mutex*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_tests5
+   Helgrind:PthAPIerror
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_messages_Mutex*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_tests6
+   Helgrind:UnlockUnlocked
+   fun:pthread_mutex_*
+   ...
+   fun:*unitTests*castor_messages_Mutex*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+
+{
+   pthread_test7
+   Helgrind:Misc
+   fun:pthread_cond_*
+   ...
+   fun:_ZN9unitTests*castor_tape_threading_*
+   fun:_ZN7testing4Test3RunEv
+   fun:_ZN7testing8internal12TestInfoImpl3RunEv
+   fun:_ZN7testing8TestCase3RunEv
+   fun:_ZN7testing8internal12UnitTestImpl11RunAllTestsEv
+   fun:main
+}
+