diff --git a/.gitignore b/.gitignore
index 76b96744d4282e121eb982b4280873ad526325dc..5a50ff88f595c26fea1b63fc17aaca923708115e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,4 @@ CMakeCache.txt
 *.qm
 *.ilk
 *.pdb
-*.lib
-*.json
-*.txt
-*.xml
\ No newline at end of file
+*.lib
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1e8bac515463dc02d621f9c0d4d0cd065677cc04
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,82 @@
+cmake_minimum_required(VERSION 3.12)
+
+exec_program("git" ${CMAKE_CURRENT_SOURCE_DIR} ARGS "describe --tags --abbrev=0" OUTPUT_VARIABLE GIT_TAG)
+
+project(BT_Interfaces
+    VERSION ${GIT_TAG}
+    LANGUAGES CXX)
+
+include(GNUInstallDirs)
+
+set(INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Installation directory for executables")
+set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Installation directory for libraries")
+set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} CACHE PATH "Installation directory for header files")
+set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} CACHE STRING "Installation directory for cmake configuration files")
+
+set(TN BT_Interfaces)
+add_library(${TN} SHARED)
+set_target_properties(${TN} PROPERTIES OUTPUT_NAME bt_interfaces)
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
+  set_target_properties(${TN} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true)
+endif()
+ 
+include(Src/CMakeLists.txt)
+
+install(
+    TARGETS
+        BT_Interfaces
+    EXPORT
+        ${PROJECT_NAME}Targets
+    RUNTIME DESTINATION "${INSTALL_BINDIR}"
+    LIBRARY DESTINATION "${INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${INSTALL_LIBDIR}"
+)
+foreach(file ${BT_Interfaces_PUBLIC_HEADERS})
+    file(RELATIVE_PATH rel_path "${CMAKE_CURRENT_LIST_DIR}/Src" ${file})
+    get_filename_component(install_path ${rel_path} DIRECTORY)
+    install(FILES ${file} DESTINATION "${INSTALL_INCLUDEDIR}/${install_path}")
+endforeach()
+
+export(
+    TARGETS
+        BT_Interfaces
+    FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
+)
+
+install(EXPORT ${PROJECT_NAME}Targets
+    FILE ${PROJECT_NAME}Targets.cmake
+    DESTINATION ${INSTALL_CONFIGDIR}
+)
+
+include(CMakePackageConfigHelpers)
+
+write_basic_package_version_file(
+    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
+    VERSION ${PROJECT_VERSION}
+    COMPATIBILITY AnyNewerVersion
+)
+
+configure_package_config_file(
+    ${CMAKE_CURRENT_LIST_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
+    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+    INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
+)
+
+install(
+    FILES
+        ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+        ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
+    DESTINATION ${INSTALL_CONFIGDIR}
+)
+
+install(
+    FILES
+        ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Deploy.cmake
+        ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Windeployqt.cmake
+    DESTINATION ${INSTALL_CONFIGDIR}/Modules/${PROJECT_NAME}
+)
+
+set(CPACK_GENERATOR "TXZ")
+set(CPACK_PACKAGE_VERSION ${GIT_TAG})
+
+include(CPack)
diff --git a/Src/CMakeLists.txt b/Src/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b0570a31efa5aa390f5b78dde209899fa569510b
--- /dev/null
+++ b/Src/CMakeLists.txt
@@ -0,0 +1,72 @@
+##############################################################
+#### Biotracker: Interfaces
+##############################################################
+
+target_include_directories(${TN} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
+    $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}>
+)
+
+find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets OpenGL Xml Network)
+target_link_libraries(${TN}  Qt5::Core Qt5::Gui Qt5::Xml Qt5::Network Qt5::Widgets)
+
+find_package(OpenCV 3 REQUIRED)
+target_link_libraries(${TN} ${OpenCV_LIBS})
+
+set_target_properties(${TN} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+set_target_properties(${TN} PROPERTIES AUTOMOC ON AUTOUIC ON AUTORCC ON)
+set_target_properties(${TN} PROPERTIES
+    CXX_STANDARD 17
+    CXX_STANDARD_REQUIRED YES
+    CXX_EXTENSIONS NO
+)
+
+target_compile_definitions(${TN} PRIVATE RF_INTERFACES_EXPORT)
+
+target_sources(${TN}
+PRIVATE
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IBioTrackerContext.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IBioTrackerPlugin.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IController/IController.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModel.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelAreaDescriptor.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelDataExporter.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedComponent.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedComponentFactory.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedTrajectory.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackingAlgorithm.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IObject.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/Serializable.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IView.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsPixmapItem.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsScene.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsView.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewMainWindow.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewOpenGLWidget.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewTrackedComponent.cpp"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewWidget.cpp"
+)
+
+set(${TN}_PUBLIC_HEADERS
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/ENUMS.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IBioTrackerContext.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IBioTrackerPlugin.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IController/IController.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModel.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelAreaDescriptor.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelDataExporter.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedComponent.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedComponentFactory.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackedTrajectory.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IModelTrackingAlgorithm.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/IObject.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IModel/Serializable.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IView.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsPixmapItem.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsScene.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewGraphicsView.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewMainWindow.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewOpenGLWidget.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewTrackedComponent.h"
+    "${CMAKE_CURRENT_LIST_DIR}/Interfaces/IView/IViewWidget.h"
+)
diff --git a/cmake/InterfacesConfig.cmake.in b/cmake/BT_InterfacesConfig.cmake.in
similarity index 100%
rename from cmake/InterfacesConfig.cmake.in
rename to cmake/BT_InterfacesConfig.cmake.in