diff --git a/CMakeLists.txt b/CMakeLists.txt
index e9b86b1701afd1a33d276bf66cf48201a3c51d95..38c002d4d358eda80347a157b57016ae91fe55db 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,6 +35,11 @@ set(JPSVIS_VERSION
   ${JPSVIS_MAJOR_VERSION}.${JPSVIS_MINOR_VERSION}.${JPSVIS_PATCH_VERSION})
 message( STATUS "JPSVIS_VERSION: " ${JPSVIS_VERSION} )
 
+# we need this to be able to include headers produced by uic in our code
+# (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
+INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+
 set( SAMPLE_SRCS
   src/geometry/Building.cpp 
   src/geometry/Crossing.cpp 
@@ -171,7 +176,7 @@ message(STATUS "DESIRED_QT_VERSION " ${DESIRED_QT_VERSION})
 
 
 FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake  REQUIRED)
-FIND_PACKAGE(Qt COMPONENTS QtXml QT_USE_QTNETWORK REQUIRED)
+FIND_PACKAGE(Qt COMPONENTS QtXml QT_USE_QTNETWORK QtXmlPatterns REQUIRED)
 message(STATUS "QT5_INSTALLED " ${QT3_INSTALLED})
 message(STATUS "QT4_INSTALLED " ${QT4_INSTALLED})
 message(STATUS "QT3_INSTALLED " ${QT3_INSTALLED})
@@ -179,37 +184,27 @@ message(STATUS "QT3_INSTALLED " ${QT3_INSTALLED})
 
 # by default only QtCore and QtGui modules are enabled
 # other modules must be enabled like this:
-set( QT_USE_QTXML TRUE ) # needed!
+set(QT_USE_QTXML TRUE)  # needed!
 set(QT_USE_QTNETWORK TRUE)
 
-# add some useful macros and variables
-# (QT_USE_FILE is a variable defined by FIND_PACKAGE( Qt4 ) that contains a path to CMake script)
-include( ${QT_USE_FILE} )
-
 # this command will generate rules that will run rcc on all files from SAMPLE_RCS
 # in result SAMPLE_RC_SRCS variable will contain paths to files produced by rcc
 if( ${QT4_INSTALLED} )
+  message(STATUS "Working with Qt4")
   QT4_ADD_RESOURCES( SAMPLE_RC_SRCS ${SAMPLE_RCS} )
   # and finally this will run moc:
   QT4_WRAP_CPP( SAMPLE_MOC_HDRS ${SAMPLE_MOC_HDRS} )
   # this will run uic on .ui files:
   QT4_WRAP_UI( SAMPLE_UI_HDRS ${SAMPLE_UIS} )
   QT4_ADD_RESOURCES(SAMPLE_RESOURCES_RCS ${SAMPLE_RCS})
+  # add some useful macros and variables
+  # (QT_USE_FILE is a variable defined by FIND_PACKAGE( Qt4 ) that contains a path to CMake script)
+  include( ${QT_USE_FILE} )
 elseif( ${QT5_INSTALLED} )
+  message(STATUS "Working with Qt5")	
   find_package(Qt5Widgets REQUIRED)
-endif()
-
-
-if(${VTK_VERSION} VERSION_GREATER "6") #  AND VTK_QT_VERSION VERSION_GREATER "4"
-  message(WARNING "JPSvis is not tested with vtk " ${VTK_VERSION})
-endif()
-
-
-
-# we need this to be able to include headers produced by uic in our code
-# (CMAKE_BINARY_DIR holds a path to the build directory, while INCLUDE_DIRECTORIES() works just like INCLUDEPATH from qmake)
-INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+  qt5_wrap_ui(SAMPLE_UI_HDRS ${SAMPLE_UIS})
+endif() 
 
 # here we instruct CMake to build JPSvis executable from all of the source files
 ADD_EXECUTABLE( JPSvis ${SAMPLE_SRCS} 
@@ -224,10 +219,14 @@ set(VTK_USE_GUISUPPORT  ON)
 set(VTK_USE_QT  ON)
 #set(VTK_USE_QVTK_QTOPENGL ON )
 
-#TARGET_LINK_LIBRARIES( JPSvis ${QT_LIBRARIES} QVTK) # QVTK is for VTK 5.x. For VTK 6, use ${VTK_LIBRARIES} instead
-
-if(${VTK_VERSION} VERSION_LESS "6")
-  TARGET_LINK_LIBRARIES( JPSvis ${QT_LIBRARIES} QVTK)
+# QVTK is for VTK 5.x. For VTK 6, use ${VTK_LIBRARIES} instead
+if(VTK_LIBRARIES)
+	if(${VTK_VERSION} VERSION_LESS "6")
+  		TARGET_LINK_LIBRARIES( JPSvis ${QT_LIBRARIES} QVTK)
+	else()	
+  		TARGET_LINK_LIBRARIES( JPSvis  ${VTK_LIBRARIES} ${QT_LIBRARIES})
+	endif()
 else()
-  TARGET_LINK_LIBRARIES( JPSvis  ${VTK_LIBRARIES})
-endif()
+    target_link_libraries(JPSvis vtkHybrid QVTK vtkViews ${QT_LIBRARIES})
+endif()	
+