diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8876c3315745993f1a03e6cdb1e9d66fae6c4d91..8d59e117e13eaf8a6654aaad5a21f4c9b921dc71 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
 ADD_DEFINITIONS("-std=c++0x")
 # ADD_DEFINITIONS("-std=c++0x")
@@ -15,10 +15,14 @@ PROJECT(qtsflphone)
 SET(LOCAL_CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/")
 SET(CMAKE_MODULE_PATH "${LOCAL_CMAKE_MODULE_PATH}")
 
-FIND_PACKAGE ( KDE4 REQUIRED )
-FIND_PACKAGE ( Qt4  REQUIRED )
+IF(${ENABLE_QT5} MATCHES true)
+   FIND_PACKAGE(Qt5Core)
+   FIND_PACKAGE(Qt5DBus)
+ELSE()
+   FIND_PACKAGE ( Qt4  REQUIRED )
+ENDIF(${ENABLE_QT5} MATCHES true)
+
 
-INCLUDE ( KDE4Defaults )
 
 set(GENERIC_LIB_VERSION "1.2.3")
 
@@ -60,12 +64,22 @@ SET_SOURCE_FILES_PROPERTIES(
    ${configurationmanager_xml}
    PROPERTIES 
    CLASSNAME ConfigurationManagerInterface
-   INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h") 
+   INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h")
 
-QT4_ADD_DBUS_INTERFACE(
-   qtsflphone_LIB_SRCS
-   ${configurationmanager_xml}
-   configurationmanager_dbus_interface)
+IF(${ENABLE_QT5} MATCHES true)
+   QT5_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${configurationmanager_xml}
+      configurationmanager_dbus_interface
+   )
+ELSE()
+   QT4_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${configurationmanager_xml}
+      configurationmanager_dbus_interface
+   )
+
+ENDIF(${ENABLE_QT5} MATCHES true)
 
 # call manager interface
 SET ( callmanager_xml  ${dbus_xml_introspecs_path}/callmanager-introspec.xml )
@@ -76,10 +90,20 @@ SET_SOURCE_FILES_PROPERTIES(
    CLASSNAME CallManagerInterface
    INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h") 
 
-QT4_ADD_DBUS_INTERFACE(
-   qtsflphone_LIB_SRCS
-   ${callmanager_xml}
-   callmanager_dbus_interface)
+IF(${ENABLE_QT5} MATCHES true)
+   QT5_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${callmanager_xml}
+      callmanager_dbus_interface
+   )
+ELSE()
+   QT4_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${callmanager_xml}
+      callmanager_dbus_interface
+   )
+ENDIF(${ENABLE_QT5} MATCHES true)
+
 
 # video manager interface
 SET ( video_xml  ${dbus_xml_introspecs_path}/video_controls-introspec.xml )
@@ -90,10 +114,20 @@ SET_SOURCE_FILES_PROPERTIES(
    CLASSNAME VideoInterface
    INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h")
 
-QT4_ADD_DBUS_INTERFACE(
-   qtsflphone_LIB_SRCS
-   ${video_xml}
-   video_dbus_interface)
+IF(${ENABLE_QT5} MATCHES true)
+   QT5_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${video_xml}
+      video_dbus_interface
+   )
+ELSE()
+   QT4_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${video_xml}
+      video_dbus_interface
+   )
+ENDIF(${ENABLE_QT5} MATCHES true)
+
 
 # instance interface
 SET ( instance_xml  ${dbus_xml_introspecs_path}/instance-introspec.xml )
@@ -103,14 +137,28 @@ SET_SOURCE_FILES_PROPERTIES(
    PROPERTIES 
    CLASSNAME InstanceInterface
    INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/dbus/metatypes.h") 
-   
-QT4_ADD_DBUS_INTERFACE(
-   qtsflphone_LIB_SRCS
-   ${instance_xml}
-   instance_dbus_interface)
- 
-kde4_add_library( qtsflphone  SHARED ${qtsflphone_LIB_SRCS} )
+
+IF(${ENABLE_QT5} MATCHES true)
+   QT5_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${instance_xml}
+      instance_dbus_interface
+   )
+ELSE()
+   QT4_ADD_DBUS_INTERFACE(
+      qtsflphone_LIB_SRCS
+      ${instance_xml}
+      instance_dbus_interface
+   )
+ENDIF(${ENABLE_QT5} MATCHES true)
+
  
+add_library( qtsflphone  SHARED ${qtsflphone_LIB_SRCS} )
+
+IF(${ENABLE_QT5} MATCHES true)
+   QT5_USE_MODULES(qtsflphone Core DBus)
+ENDIF(${ENABLE_QT5} MATCHES true)
+
 target_link_libraries( qtsflphone
   -lrt
   -lpthread
@@ -119,7 +167,7 @@ target_link_libraries( qtsflphone
 )
 
 set_target_properties( qtsflphone
-  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}
+  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_VERSION}
 )
 
 set( qtsflphone_LIB_HDRS
@@ -144,9 +192,16 @@ set( qtsflphone_LIB_HDRS
   visitors/phonenumberselector.h
 )
 
+SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include)
+SET(INSTALL_TARGETS_DEFAULT_ARGS ${CMAKE_INSTALL_PREFIX}/lib)
+
 install( FILES ${qtsflphone_LIB_HDRS}
   DESTINATION ${INCLUDE_INSTALL_DIR}/qtsflphone
   COMPONENT Devel
 )
  
-install( TARGETS qtsflphone  ${INSTALL_TARGETS_DEFAULT_ARGS} )
+install( TARGETS qtsflphone
+  ARCHIVE DESTINATION lib
+  LIBRARY DESTINATION lib
+  DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS}
+)
diff --git a/src/callmodel.cpp b/src/callmodel.cpp
index 730208ea8c18f4b3485e3ee384b8e4bb5083d0bd..0d1b6aa3cdeeb6635addf488c92118fb1d53fe1a 100644
--- a/src/callmodel.cpp
+++ b/src/callmodel.cpp
@@ -15,7 +15,7 @@
  *   You should have received a copy of the GNU General Public License      *
  *   along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
  ***************************************************************************/
-#include <callmodel.h>
+#include "callmodel.h"
 
 //Qt
 #include <QtCore/QDebug>
diff --git a/src/dbus/callmanager.h b/src/dbus/callmanager.h
index 619926e9b12764f38a5a62d5506a00cabc595f06..0f8e3b4cfd8013290418f4b336fe03f6d2d74509 100644
--- a/src/dbus/callmanager.h
+++ b/src/dbus/callmanager.h
@@ -20,7 +20,7 @@
 #ifndef CALL_MANAGER_INTERFACE_SINGLETON_H
 #define CALL_MANAGER_INTERFACE_SINGLETON_H
 
-#include "src/lib/callmanager_dbus_interface.h"
+#include "callmanager_dbus_interface.h"
 #include "../typedefs.h"
 
 namespace DBus {
diff --git a/src/dbus/configurationmanager.h b/src/dbus/configurationmanager.h
index 9f55bef5b32ad9dcbd86cc7008093e3b672b12ad..ac90cf4418a48e304eaec6a96e7bd3117a36a0ae 100644
--- a/src/dbus/configurationmanager.h
+++ b/src/dbus/configurationmanager.h
@@ -19,7 +19,7 @@
 #ifndef CONFIGURATION_MANAGER_INTERFACE_SINGLETON_H
 #define CONFIGURATION_MANAGER_INTERFACE_SINGLETON_H
 
-#include "src/lib/configurationmanager_dbus_interface.h"
+#include "configurationmanager_dbus_interface.h"
 #include "../typedefs.h"
 
 namespace DBus {
diff --git a/src/dbus/instancemanager.h b/src/dbus/instancemanager.h
index 07c0bcfec243ac2103f36a8ace15e6e35d3f6aba..d17170c996d9412738da71f5c8d1b3a1d46563c8 100644
--- a/src/dbus/instancemanager.h
+++ b/src/dbus/instancemanager.h
@@ -20,7 +20,7 @@
 #ifndef INSTANCE_INTERFACE_SINGLETON_H
 #define INSTANCE_INTERFACE_SINGLETON_H
 
-#include "src/lib/instance_dbus_interface.h"
+#include "instance_dbus_interface.h"
 #include "../typedefs.h"
 
 namespace DBus {
diff --git a/src/dbus/videomanager.h b/src/dbus/videomanager.h
index 1d02f1649b009772159d5269fd26439ad02ede5d..3beae23b817b9bc27ff46f9d916b425c8ee862a4 100644
--- a/src/dbus/videomanager.h
+++ b/src/dbus/videomanager.h
@@ -18,8 +18,8 @@
 #ifndef VIDEO_INTERFACE_SINGLETON_H
 #define VIDEO_INTERFACE_SINGLETON_H
 
-#include "src/lib/video_dbus_interface.h"
-#include "typedefs.h"
+#include "video_dbus_interface.h"
+#include "../typedefs.h"
 
 namespace DBus {
 
diff --git a/src/historymodel.cpp b/src/historymodel.cpp
index b5b9fd16ac5dd688af5dad690367b24cf84e1a96..ace7da1aa4229d44860a9c7ec41cab772143905d 100644
--- a/src/historymodel.cpp
+++ b/src/historymodel.cpp
@@ -308,7 +308,7 @@ QVariant HistoryModel::data( const QModelIndex& idx, int role) const
    case HistoryTreeBackend::Type::CALL:
       if (role == Call::Role::DropState)
          return QVariant(modelItem->dropState());
-      else if (m_lCategoryCounter.size() >= idx.parent().row()
+      else if (m_lCategoryCounter.size() >= idx.parent().row() && idx.parent().row() >= 0
          && m_lCategoryCounter[idx.parent().row()]
          && m_lCategoryCounter[idx.parent().row()]->m_lChilds.size() >= idx.row())
          return m_lCategoryCounter[idx.parent().row()]->m_lChilds[idx.row()]->roleData((Call::Role)role);
diff --git a/src/historymodel.h b/src/historymodel.h
index 2e912d4fe8f8b34bb036e366de54ce2b641af888..45ebb89d717508ad783c99a99f48bb2f1cfda629 100644
--- a/src/historymodel.h
+++ b/src/historymodel.h
@@ -118,6 +118,9 @@ private:
    friend class HistoryModel;
    public:
       virtual QObject* getSelf() {return this;}
+      virtual ~TopLevelItem() {
+         m_spInstance->m_lCategoryCounter.removeAll(this);
+      }
    private:
       TopLevelItem(int name);
       CallList m_lChilds;