diff --git a/catkin_ws/src/learn_environment/CMakeLists.txt b/catkin_ws/src/learn_environment/CMakeLists.txt
index 3c964159705d6b58953bc543412d98731de74603..7e3dc760b7be0135a6724d7758724637e88b6b1c 100644
--- a/catkin_ws/src/learn_environment/CMakeLists.txt
+++ b/catkin_ws/src/learn_environment/CMakeLists.txt
@@ -35,46 +35,23 @@ include_directories(
   /usr/include/nlohmann
 )
 
-set(CMAKE_AUTOMOC ON)
-
 ## Include Qt libraries, only compatible with RViz using Qt5
 find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets)
 set(QT_LIBRARIES Qt5::Widgets)
 
 add_definitions(-DQT_NO_KEYWORDS)
 
+add_subdirectory(src/task_management)
+add_subdirectory(src/ui)
+add_subdirectory(src/script_execution)
+add_subdirectory(src/common)
+
 set(${PROJECT_NAME}_HDRS
-  include/${PROJECT_NAME}/learn_environment.hpp
-  include/${PROJECT_NAME}/subtask_item.hpp
-  include/${PROJECT_NAME}/task_manager.hpp
-  include/${PROJECT_NAME}/task.hpp
-  include/${PROJECT_NAME}/custom_list_widget.hpp
-  include/${PROJECT_NAME}/sidebar.hpp
-  include/${PROJECT_NAME}/task_parser.hpp
-  include/${PROJECT_NAME}/task_executor.hpp
-  include/${PROJECT_NAME}/script_worker.hpp
-  include/${PROJECT_NAME}/process_runner.hpp
-  include/${PROJECT_NAME}/task_ui.hpp
-  include/${PROJECT_NAME}/notebook_converter.hpp
-  include/${PROJECT_NAME}/folder_structure_constants.hpp
-  include/${PROJECT_NAME}/execute_frame.hpp
-  include/${PROJECT_NAME}/toast.hpp
+  include/learn_environment.hpp
 )
 
 set(${PROJECT_NAME}_SRCS
   src/learn_environment.cpp
-  src/subtask_item.cpp
-  src/task_manager.cpp
-  src/custom_list_widget.cpp
-  src/sidebar.cpp
-  src/task_parser.cpp
-  src/task_executor.cpp
-  src/script_worker.cpp
-  src/process_runner.cpp
-  src/task_ui.cpp
-  src/notebook_converter.cpp
-  src/execute_frame.cpp
-  src/toast.cpp
 )
 
 set(${PROJECT_NAME}_UIS
@@ -103,7 +80,7 @@ add_library(learn_environment
   ${${PROJECT_NAME}_MOCS}
   ${${PROJECT_NAME}_QRC_SOURCES}
   ${${PROJECT_NAME}_UIS}
-  ${${PROJECT_NAME}_QRC} 
+  ${${PROJECT_NAME}_QRC}
 )
 
 target_link_libraries(learn_environment
@@ -112,4 +89,8 @@ target_link_libraries(learn_environment
   Qt5::Widgets
   ${QT_LIBRARIES}
   ${topic_tools_LIBRARIES}
+  task_management
+  ui
+  script_execution
+  common
 )
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/folder_structure_constants.hpp b/catkin_ws/src/learn_environment/include/common/folder_structure_constants.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/folder_structure_constants.hpp
rename to catkin_ws/src/learn_environment/include/common/folder_structure_constants.hpp
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/notebook_converter.hpp b/catkin_ws/src/learn_environment/include/common/notebook_converter.hpp
similarity index 99%
rename from catkin_ws/src/learn_environment/include/learn_environment/notebook_converter.hpp
rename to catkin_ws/src/learn_environment/include/common/notebook_converter.hpp
index 25702d9ad0b338e222a40526cdc5e5e35d2a0768..21381d48c80d0de55c3830ecfe2ac4437d298c83 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/notebook_converter.hpp
+++ b/catkin_ws/src/learn_environment/include/common/notebook_converter.hpp
@@ -24,6 +24,7 @@ class NotebookConverter : public QObject {
     Q_OBJECT
 public:
     explicit NotebookConverter(QObject *parent = nullptr);
+    ~NotebookConverter();
 
     /**
      * @brief Converts a Jupyter notebook to a Python script. Ignoring code cells with "solution" tag.
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/task.hpp b/catkin_ws/src/learn_environment/include/common/task.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/task.hpp
rename to catkin_ws/src/learn_environment/include/common/task.hpp
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp b/catkin_ws/src/learn_environment/include/learn_environment.hpp
similarity index 95%
rename from catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp
rename to catkin_ws/src/learn_environment/include/learn_environment.hpp
index bd43e9cdcb6bb7570ce000b6e95ca2de7ad769be..a7d4f9c198af822fde976d133c042ae135332dfe 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp
+++ b/catkin_ws/src/learn_environment/include/learn_environment.hpp
@@ -3,9 +3,9 @@
 
 #include <rviz/panel.h>
 #include <ui_learn_environment.h>
-#include "task_manager.hpp"
-#include "task_ui.hpp"
-#include "notebook_converter.hpp"
+#include "task_management/task_manager.hpp"
+#include "ui/task_ui.hpp"
+#include "common/notebook_converter.hpp"
 
 #include <QWidget>
 #include <QObject>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/process_runner.hpp b/catkin_ws/src/learn_environment/include/script_execution/process_runner.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/process_runner.hpp
rename to catkin_ws/src/learn_environment/include/script_execution/process_runner.hpp
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/script_worker.hpp b/catkin_ws/src/learn_environment/include/script_execution/script_worker.hpp
similarity index 98%
rename from catkin_ws/src/learn_environment/include/learn_environment/script_worker.hpp
rename to catkin_ws/src/learn_environment/include/script_execution/script_worker.hpp
index 6ccb74154691bbf023703f2c3da5bb7eeb1e0213..02562e0cd8b1b1062f6bbce23ed93d86baeb13a2 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/script_worker.hpp
+++ b/catkin_ws/src/learn_environment/include/script_execution/script_worker.hpp
@@ -6,7 +6,7 @@
 #include <QProcess>
 #include <QList>
 
-#include "notebook_converter.hpp"
+#include "common/notebook_converter.hpp"
 
 class ProcessRunner;
 
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/task_executor.hpp b/catkin_ws/src/learn_environment/include/script_execution/task_executor.hpp
similarity index 98%
rename from catkin_ws/src/learn_environment/include/learn_environment/task_executor.hpp
rename to catkin_ws/src/learn_environment/include/script_execution/task_executor.hpp
index d0be7575aa6089b7b7772eea17157702a5e57b51..be6465619172ba93151feb23b53150bc77acd651 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/task_executor.hpp
+++ b/catkin_ws/src/learn_environment/include/script_execution/task_executor.hpp
@@ -1,7 +1,7 @@
 #ifndef TASK_EXECUTOR_HPP
 #define TASK_EXECUTOR_HPP
 
-#include "task.hpp"
+#include "common/task.hpp"
 
 #include <QObject>
 #include <QString>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/task_manager.hpp b/catkin_ws/src/learn_environment/include/task_management/task_manager.hpp
similarity index 98%
rename from catkin_ws/src/learn_environment/include/learn_environment/task_manager.hpp
rename to catkin_ws/src/learn_environment/include/task_management/task_manager.hpp
index 78d4ae3efb24b2661576c0236ec69bb464d2252c..337bd7a8af43b13a8657a7a9b7e8c460638d226d 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/task_manager.hpp
+++ b/catkin_ws/src/learn_environment/include/task_management/task_manager.hpp
@@ -1,8 +1,8 @@
 #ifndef TASKMANAGER_HPP
 #define TASKMANAGER_HPP
 
-#include "task.hpp"
-#include "task_executor.hpp"
+#include "common/task.hpp"
+#include "script_execution/task_executor.hpp"
 
 #include <QObject>
 #include <QVector>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/task_parser.hpp b/catkin_ws/src/learn_environment/include/task_management/task_parser.hpp
similarity index 98%
rename from catkin_ws/src/learn_environment/include/learn_environment/task_parser.hpp
rename to catkin_ws/src/learn_environment/include/task_management/task_parser.hpp
index 79e6e22b9e679a93aa94d43dcdd19132c7a25fb5..988039e60bc04c0e5b01f1b3de37fbda60de52e1 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/task_parser.hpp
+++ b/catkin_ws/src/learn_environment/include/task_management/task_parser.hpp
@@ -1,7 +1,7 @@
 #ifndef TASK_PARSER_HPP
 #define TASK_PARSER_HPP
 
-#include "task.hpp"
+#include "common/task.hpp"
 
 #include <QVector>
 #include <QString>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/custom_list_widget.hpp b/catkin_ws/src/learn_environment/include/ui/custom_list_widget.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/custom_list_widget.hpp
rename to catkin_ws/src/learn_environment/include/ui/custom_list_widget.hpp
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/execute_frame.hpp b/catkin_ws/src/learn_environment/include/ui/execute_frame.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/execute_frame.hpp
rename to catkin_ws/src/learn_environment/include/ui/execute_frame.hpp
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/sidebar.hpp b/catkin_ws/src/learn_environment/include/ui/sidebar.hpp
similarity index 96%
rename from catkin_ws/src/learn_environment/include/learn_environment/sidebar.hpp
rename to catkin_ws/src/learn_environment/include/ui/sidebar.hpp
index af1228f082f19236619c2a84c5584fe6be676064..a810590b65f921d7aeb38aaf1e72e4a9f262282c 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/sidebar.hpp
+++ b/catkin_ws/src/learn_environment/include/ui/sidebar.hpp
@@ -1,8 +1,8 @@
 #ifndef SIDEBAR_HPP
 #define SIDEBAR_HPP
 
-#include "custom_list_widget.hpp"
-#include "task.hpp"
+#include "ui/custom_list_widget.hpp"
+#include "common/task.hpp"
 
 #include <QWidget>
 #include <QVBoxLayout>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/subtask_item.hpp b/catkin_ws/src/learn_environment/include/ui/subtask_item.hpp
similarity index 96%
rename from catkin_ws/src/learn_environment/include/learn_environment/subtask_item.hpp
rename to catkin_ws/src/learn_environment/include/ui/subtask_item.hpp
index 2b2a4472c8b3377a1d3aa2df56065b1826420138..7b078e013f337a5b6612212c832c1e91a96d7690 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/subtask_item.hpp
+++ b/catkin_ws/src/learn_environment/include/ui/subtask_item.hpp
@@ -1,10 +1,10 @@
 #ifndef SUBTASK_ITEM_HPP
 #define SUBTASK_ITEM_HPP
 
-#include "task.hpp"
-#include "task_manager.hpp"
-#include "execute_frame.hpp"
-#include "toast.hpp"
+#include "common/task.hpp"
+#include "task_management/task_manager.hpp"
+#include "ui/execute_frame.hpp"
+#include "ui/toast.hpp"
 
 #include <QWidget>
 #include <QPushButton>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/task_ui.hpp b/catkin_ws/src/learn_environment/include/ui/task_ui.hpp
similarity index 97%
rename from catkin_ws/src/learn_environment/include/learn_environment/task_ui.hpp
rename to catkin_ws/src/learn_environment/include/ui/task_ui.hpp
index 4e2d939fea1a766ea89883333e31ad65bcf65c75..a31451aed07e1af0097777bf6a0dfaccf6e6e5a2 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/task_ui.hpp
+++ b/catkin_ws/src/learn_environment/include/ui/task_ui.hpp
@@ -1,10 +1,10 @@
 #ifndef TASKUI_HPP
 #define TASKUI_HPP
 
-#include "sidebar.hpp"
-#include "task.hpp"
-#include "task_manager.hpp"
-#include "execute_frame.hpp"
+#include "ui/sidebar.hpp"
+#include "common/task.hpp"
+#include "task_management/task_manager.hpp"
+#include "ui/execute_frame.hpp"
 
 #include <QObject>
 #include <QVBoxLayout>
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/toast.hpp b/catkin_ws/src/learn_environment/include/ui/toast.hpp
similarity index 100%
rename from catkin_ws/src/learn_environment/include/learn_environment/toast.hpp
rename to catkin_ws/src/learn_environment/include/ui/toast.hpp
diff --git a/catkin_ws/src/learn_environment/src/common/CMakeLists.txt b/catkin_ws/src/learn_environment/src/common/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d29558748673db5a8d928f32e583d32656e1a7fa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/src/common/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 3.0.2)
+
+add_library(common
+    notebook_converter.cpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/common/folder_structure_constants.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/common/notebook_converter.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/common/task.hpp
+)
+
+target_include_directories(common PUBLIC ${CMAKE_SOURCE_DIR}/include/common)
+
+target_link_libraries(common
+    Qt5::Core
+    Qt5::Widgets
+    ${QT_LIBRARIES}
+    ${catkin_LIBRARIES}
+)
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/src/notebook_converter.cpp b/catkin_ws/src/learn_environment/src/common/notebook_converter.cpp
similarity index 99%
rename from catkin_ws/src/learn_environment/src/notebook_converter.cpp
rename to catkin_ws/src/learn_environment/src/common/notebook_converter.cpp
index 42ba6ebfa9bcb94b089c773bb992549ba3de806a..d3f269bd684806da534aed40dd6f9192c4dd6273 100644
--- a/catkin_ws/src/learn_environment/src/notebook_converter.cpp
+++ b/catkin_ws/src/learn_environment/src/common/notebook_converter.cpp
@@ -1,10 +1,11 @@
-#include "learn_environment/notebook_converter.hpp"
+#include "common/notebook_converter.hpp"
+#include "common/folder_structure_constants.hpp"
+
 #include <QFile>
 #include <QTextStream>
 #include <QDebug>
 #include <unordered_map>
 #include <nlohmann/json.hpp>
-#include "learn_environment/folder_structure_constants.hpp"
 #include <ros/package.h>
 #include <ros/ros.h>
 
@@ -25,6 +26,8 @@ const QString SOLUTION_CODE_PLACEHOLDER_END = "# ↑↑↑↑ SOLUTION CODE HERE
 
 NotebookConverter::NotebookConverter(QObject *parent) : QObject(parent) {}
 
+NotebookConverter::~NotebookConverter() {}
+
 bool NotebookConverter::convertNotebook(const QString &notebookPath) {
     QFile inputFile(notebookPath);
     if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
diff --git a/catkin_ws/src/learn_environment/src/learn_environment.cpp b/catkin_ws/src/learn_environment/src/learn_environment.cpp
index 5df964a7bbc299e2357c2d30c181177cfe7bb83f..f8269917c6e1cdf71b398f9197f93d5264d52435 100644
--- a/catkin_ws/src/learn_environment/src/learn_environment.cpp
+++ b/catkin_ws/src/learn_environment/src/learn_environment.cpp
@@ -1,6 +1,4 @@
-#include "learn_environment/learn_environment.hpp"
-#include "learn_environment/task_manager.hpp"
-#include "learn_environment/task_ui.hpp"
+#include "learn_environment.hpp"
 #include <pluginlib/class_list_macros.hpp>
 
 #include <QMainWindow>
diff --git a/catkin_ws/src/learn_environment/src/script_execution/CMakeLists.txt b/catkin_ws/src/learn_environment/src/script_execution/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f862257ff760591c736b88bd610dff86dfc8b299
--- /dev/null
+++ b/catkin_ws/src/learn_environment/src/script_execution/CMakeLists.txt
@@ -0,0 +1,20 @@
+add_library(script_execution
+    process_runner.cpp
+    script_worker.cpp
+    task_executor.cpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/script_execution/process_runner.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/script_execution/script_worker.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/script_execution/task_executor.hpp
+)
+
+target_include_directories(script_execution PUBLIC 
+    ${CMAKE_SOURCE_DIR}/include/script_execution
+)
+
+target_link_libraries(script_execution
+    common
+    Qt5::Core
+    Qt5::Widgets
+    ${QT_LIBRARIES}
+    ${catkin_LIBRARIES}
+)
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/src/process_runner.cpp b/catkin_ws/src/learn_environment/src/script_execution/process_runner.cpp
similarity index 98%
rename from catkin_ws/src/learn_environment/src/process_runner.cpp
rename to catkin_ws/src/learn_environment/src/script_execution/process_runner.cpp
index 2559ccde43841fc2d3e82c8acd96dcc53ca65485..df89ce6ce7b3b7b40db2f1c6732905aca1f378d7 100644
--- a/catkin_ws/src/learn_environment/src/process_runner.cpp
+++ b/catkin_ws/src/learn_environment/src/script_execution/process_runner.cpp
@@ -1,4 +1,4 @@
-#include "learn_environment/process_runner.hpp"
+#include "script_execution/process_runner.hpp"
 
 #include <QDebug>
 #include <QRegularExpression>
diff --git a/catkin_ws/src/learn_environment/src/script_worker.cpp b/catkin_ws/src/learn_environment/src/script_execution/script_worker.cpp
similarity index 99%
rename from catkin_ws/src/learn_environment/src/script_worker.cpp
rename to catkin_ws/src/learn_environment/src/script_execution/script_worker.cpp
index 2da58acb63e0227081b7ca36b2a752766f324328..684ec08f3e81fa9cb38831d683fc7c85b625e3b1 100644
--- a/catkin_ws/src/learn_environment/src/script_worker.cpp
+++ b/catkin_ws/src/learn_environment/src/script_execution/script_worker.cpp
@@ -1,5 +1,5 @@
-#include "learn_environment/script_worker.hpp"
-#include "learn_environment/process_runner.hpp"
+#include "script_execution/script_worker.hpp"
+#include "script_execution/process_runner.hpp"
 
 #include <QDebug>
 #include <QFile>
diff --git a/catkin_ws/src/learn_environment/src/task_executor.cpp b/catkin_ws/src/learn_environment/src/script_execution/task_executor.cpp
similarity index 96%
rename from catkin_ws/src/learn_environment/src/task_executor.cpp
rename to catkin_ws/src/learn_environment/src/script_execution/task_executor.cpp
index af4ef313f4efbb578b7bac7867aae893bd992085..8e508f3bb96a8e440f9ab6bdae91fb5b5e5728cf 100644
--- a/catkin_ws/src/learn_environment/src/task_executor.cpp
+++ b/catkin_ws/src/learn_environment/src/script_execution/task_executor.cpp
@@ -1,6 +1,6 @@
-#include "learn_environment/task_executor.hpp"
-#include "learn_environment/script_worker.hpp"
-#include "learn_environment/folder_structure_constants.hpp"
+#include "script_execution/task_executor.hpp"
+#include "script_execution/script_worker.hpp"
+#include "common/folder_structure_constants.hpp"
 
 #include <QThread>
 #include <QFile>
diff --git a/catkin_ws/src/learn_environment/src/task_management/CMakeLists.txt b/catkin_ws/src/learn_environment/src/task_management/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c6e856d0dc8be5a122b92f71b1f78eb45062180c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/src/task_management/CMakeLists.txt
@@ -0,0 +1,20 @@
+add_library(task_management
+    task_manager.cpp
+    task_parser.cpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/task_management/task_manager.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/task_management/task_parser.hpp
+)
+
+target_include_directories(task_management PUBLIC 
+    ${CMAKE_SOURCE_DIR}/include
+)
+
+target_link_libraries(task_management
+    common
+    script_execution
+    ui
+    Qt5::Core
+    Qt5::Widgets
+    ${QT_LIBRARIES}
+    ${catkin_LIBRARIES}
+)
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/src/task_manager.cpp b/catkin_ws/src/learn_environment/src/task_management/task_manager.cpp
similarity index 97%
rename from catkin_ws/src/learn_environment/src/task_manager.cpp
rename to catkin_ws/src/learn_environment/src/task_management/task_manager.cpp
index 8ab2e9d6bb9c4f276d8e63a1e60208486c71651f..a79afd304dcbdf8067ceb6c989a3b349cfbc67a7 100644
--- a/catkin_ws/src/learn_environment/src/task_manager.cpp
+++ b/catkin_ws/src/learn_environment/src/task_management/task_manager.cpp
@@ -1,9 +1,9 @@
-#include "learn_environment/task_manager.hpp"
-#include "learn_environment/task_ui.hpp"
-#include "learn_environment/task_parser.hpp"
-#include "learn_environment/task_executor.hpp"
-#include "learn_environment/notebook_converter.hpp"
-#include "learn_environment/folder_structure_constants.hpp"
+#include "task_management/task_manager.hpp"
+#include "ui/task_ui.hpp"
+#include "task_management/task_parser.hpp"
+#include "script_execution/task_executor.hpp"
+#include "common/notebook_converter.hpp"
+#include "common/folder_structure_constants.hpp"
 
 #include <QDebug>
 #include <QToolButton>
diff --git a/catkin_ws/src/learn_environment/src/task_parser.cpp b/catkin_ws/src/learn_environment/src/task_management/task_parser.cpp
similarity index 98%
rename from catkin_ws/src/learn_environment/src/task_parser.cpp
rename to catkin_ws/src/learn_environment/src/task_management/task_parser.cpp
index bc95523c1970706a0b4b861e486f98eaba3903fd..7bec70ccee28e965dad12955e5a0f87096a22d12 100644
--- a/catkin_ws/src/learn_environment/src/task_parser.cpp
+++ b/catkin_ws/src/learn_environment/src/task_management/task_parser.cpp
@@ -1,5 +1,5 @@
-#include "learn_environment/task_parser.hpp"
-#include "learn_environment/folder_structure_constants.hpp"
+#include "task_management/task_parser.hpp"
+#include "common/folder_structure_constants.hpp"
 
 #include <QFile>
 #include <QTextStream>
diff --git a/catkin_ws/src/learn_environment/src/ui/CMakeLists.txt b/catkin_ws/src/learn_environment/src/ui/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6cd223bb7276c087b17fd842ddd37704b62d706c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/src/ui/CMakeLists.txt
@@ -0,0 +1,24 @@
+add_library(ui
+    custom_list_widget.cpp
+    execute_frame.cpp
+    sidebar.cpp
+    subtask_item.cpp
+    task_ui.cpp
+    toast.cpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/custom_list_widget.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/execute_frame.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/sidebar.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/subtask_item.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/task_ui.hpp
+    ${CMAKE_SOURCE_DIR}/learn_environment/include/ui/toast.hpp
+)
+
+target_include_directories(ui PUBLIC ${CMAKE_SOURCE_DIR}/include/ui)
+
+target_link_libraries(ui
+    common
+    Qt5::Core
+    Qt5::Widgets
+    ${QT_LIBRARIES}
+    ${catkin_LIBRARIES}
+)
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/src/custom_list_widget.cpp b/catkin_ws/src/learn_environment/src/ui/custom_list_widget.cpp
similarity index 97%
rename from catkin_ws/src/learn_environment/src/custom_list_widget.cpp
rename to catkin_ws/src/learn_environment/src/ui/custom_list_widget.cpp
index 41bdf8bcdd137636028231e4d0618fbb772fba23..9cea67f387f7733258c1a88e16e834d648c01f0e 100644
--- a/catkin_ws/src/learn_environment/src/custom_list_widget.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/custom_list_widget.cpp
@@ -1,4 +1,4 @@
-#include "learn_environment/custom_list_widget.hpp"
+#include "ui/custom_list_widget.hpp"
 
 CustomListWidget::CustomListWidget(QWidget *parent)
     : QListWidget(parent) {
diff --git a/catkin_ws/src/learn_environment/src/execute_frame.cpp b/catkin_ws/src/learn_environment/src/ui/execute_frame.cpp
similarity index 98%
rename from catkin_ws/src/learn_environment/src/execute_frame.cpp
rename to catkin_ws/src/learn_environment/src/ui/execute_frame.cpp
index 6c39ca2949949344f207b31d7d2e4dc64ed2f226..2d8899f744d59880808f39a5a397ea596e1f22e0 100644
--- a/catkin_ws/src/learn_environment/src/execute_frame.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/execute_frame.cpp
@@ -1,4 +1,4 @@
-#include "learn_environment/execute_frame.hpp"
+#include "ui/execute_frame.hpp"
 #include <QDebug>
 #include <QSize>
 
diff --git a/catkin_ws/src/learn_environment/src/sidebar.cpp b/catkin_ws/src/learn_environment/src/ui/sidebar.cpp
similarity index 96%
rename from catkin_ws/src/learn_environment/src/sidebar.cpp
rename to catkin_ws/src/learn_environment/src/ui/sidebar.cpp
index 7ea327a73ddc6427961d01273d8862fe13fcc09d..340de09ca76acb3ca6286c814c33876ca9952569 100644
--- a/catkin_ws/src/learn_environment/src/sidebar.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/sidebar.cpp
@@ -1,6 +1,6 @@
-#include "learn_environment/sidebar.hpp"
-#include "learn_environment/custom_list_widget.hpp"
-#include "learn_environment/task.hpp"
+#include "ui/sidebar.hpp"
+#include "ui/custom_list_widget.hpp"
+#include "common/task.hpp"
 
 #include <QFont>
 #include <QDebug>
diff --git a/catkin_ws/src/learn_environment/src/subtask_item.cpp b/catkin_ws/src/learn_environment/src/ui/subtask_item.cpp
similarity index 99%
rename from catkin_ws/src/learn_environment/src/subtask_item.cpp
rename to catkin_ws/src/learn_environment/src/ui/subtask_item.cpp
index 287af312fff888a835cd2e55d2b3b464274d0f98..0e467224ef0c2473578f3180bf14758fa048cc7a 100644
--- a/catkin_ws/src/learn_environment/src/subtask_item.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/subtask_item.cpp
@@ -1,6 +1,6 @@
-#include "learn_environment/subtask_item.hpp"
-#include "learn_environment/task_manager.hpp"
-#include "learn_environment/notebook_converter.hpp"
+#include "ui/subtask_item.hpp"
+#include "task_management/task_manager.hpp"
+#include "common/notebook_converter.hpp"
 
 #include <QHBoxLayout>
 #include <QVBoxLayout>
diff --git a/catkin_ws/src/learn_environment/src/task_ui.cpp b/catkin_ws/src/learn_environment/src/ui/task_ui.cpp
similarity index 99%
rename from catkin_ws/src/learn_environment/src/task_ui.cpp
rename to catkin_ws/src/learn_environment/src/ui/task_ui.cpp
index 26375edc317967e1b3efc9ee91d45e341419e6dd..7230d007e36d5a3ed462c08b3c114e3716bafc52 100644
--- a/catkin_ws/src/learn_environment/src/task_ui.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/task_ui.cpp
@@ -1,5 +1,5 @@
-#include "learn_environment/task_ui.hpp"
-#include "learn_environment/subtask_item.hpp"
+#include "ui/task_ui.hpp"
+#include "ui/subtask_item.hpp"
 
 #include <QRegExp>
 #include <QSplitter>
diff --git a/catkin_ws/src/learn_environment/src/toast.cpp b/catkin_ws/src/learn_environment/src/ui/toast.cpp
similarity index 98%
rename from catkin_ws/src/learn_environment/src/toast.cpp
rename to catkin_ws/src/learn_environment/src/ui/toast.cpp
index 54ef293bf5ee21c9ad09e30c629c7ac752e33c4e..543aae49001b667237e6112dde186af2d88c2099 100644
--- a/catkin_ws/src/learn_environment/src/toast.cpp
+++ b/catkin_ws/src/learn_environment/src/ui/toast.cpp
@@ -1,4 +1,4 @@
-#include "learn_environment/toast.hpp"
+#include "ui/toast.hpp"
 
 #include <QGraphicsOpacityEffect>
 #include <QPropertyAnimation>