diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp
index 24497f54ce7717ee724948c67d748ac13a866861..ec153cbfb6aef8ec75aabd4ee4782d16f42a2edf 100644
--- a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp
+++ b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp
@@ -22,16 +22,13 @@
 
 #include <QDebug>
 
-CommandSelector::CommandSelector(Module* parent) : QDialog(), parent(parent)
+CommandSelector::CommandSelector(std::shared_ptr<Module> parent)
+    : QDialog(), parent(std::move(parent))
 {
     setupUi();
 }
 
-CommandSelector::~CommandSelector()
-{
-    for (auto key : formElements.keys())
-        delete formElements[key];
-}
+CommandSelector::~CommandSelector() {}
 
 XmlObject CommandSelector::toXmlObject(XmlObject& obj)
 {
@@ -91,41 +88,41 @@ bool CommandSelector::getSelection(QString& label, Message& message,
 
 void CommandSelector::setupUi()
 {
-    outerLayout = new QVBoxLayout;
+    outerLayout = std::make_unique<QVBoxLayout>();
     outerLayout->setSizeConstraint(QLayout::SetFixedSize);
 
-    lineEdit = new QLineEdit;
+    lineEdit = std::make_unique<QLineEdit>();
     lineEdit->setPlaceholderText("Write the button label");
-    outerLayout->addWidget(lineEdit);
+    outerLayout->addWidget(lineEdit.get());
 
-    continuosCheck = new QCheckBox;
+    continuosCheck = std::make_unique<QCheckBox>();
     continuosCheck->setText("Continuos Send");
-    outerLayout->addWidget(continuosCheck);
+    outerLayout->addWidget(continuosCheck.get());
     QObject::connect(
-        continuosCheck, &QCheckBox::stateChanged,
+        continuosCheck.get(), &QCheckBox::stateChanged,
         [this]()
         { continuosTimeoutEdit->setHidden(!continuosCheck->isChecked()); });
 
-    continuosTimeoutEdit = new QLineEdit();
+    continuosTimeoutEdit = std::make_unique<QLineEdit>();
     continuosTimeoutEdit->setPlaceholderText("Choose resend timeout in ms");
     continuosTimeoutEdit->setHidden(true);
-    outerLayout->addWidget(continuosTimeoutEdit);
+    outerLayout->addWidget(continuosTimeoutEdit.get());
 
-    messagesListComboBox = new QComboBox;
+    messagesListComboBox = std::make_unique<QComboBox>();
     messagesListComboBox->setSizePolicy(
         QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
     messagesListComboBox->addItems(MessagesList::messagesList);
-    outerLayout->addWidget(messagesListComboBox);
+    outerLayout->addWidget(messagesListComboBox.get());
 
-    formGridLayout = new QGridLayout;
-    outerLayout->addLayout(formGridLayout);
+    formGridLayout = std::make_unique<QGridLayout>();
+    outerLayout->addLayout(formGridLayout.get());
 
     outerLayout->addStretch();
 
-    sendButton = new QPushButton("Select");
-    outerLayout->addWidget(sendButton);
+    sendButton = std::make_unique<QPushButton>("Select");
+    outerLayout->addWidget(sendButton.get());
 
-    setLayout(outerLayout);
+    setLayout(outerLayout.get());
 
     MessagesList::fillMessagesMap(formElements);
 
@@ -133,19 +130,19 @@ void CommandSelector::setupUi()
     currentMessage = "PING_TC";
     messagesListComboBox->setCurrentText(currentMessage);
 
-    connect(messagesListComboBox, &QComboBox::currentTextChanged, this,
+    connect(messagesListComboBox.get(), &QComboBox::currentTextChanged, this,
             [=](QString key)
             {
                 if (formElements.contains(key))
                 {
                     formElements[currentMessage]->removeFromGridLayout(
-                        formGridLayout);
-                    formElements[key]->applyToGridLayout(formGridLayout);
+                        formGridLayout.get());
+                    formElements[key]->applyToGridLayout(formGridLayout.get());
                     currentMessage = key;
                 }
             });
 
-    connect(sendButton, &QPushButton::clicked,
+    connect(sendButton.get(), &QPushButton::clicked,
             [=]()
             {
                 if (continuosCheck->isChecked())
diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.h b/src/shared/Modules/CompactCommandPad/CommandSelector.h
index e15477adac652db3cba13565a9b4b260cfe245c2..b21ba186779b54fbb18e5a260a40aae215be5496 100644
--- a/src/shared/Modules/CompactCommandPad/CommandSelector.h
+++ b/src/shared/Modules/CompactCommandPad/CommandSelector.h
@@ -37,7 +37,7 @@ class CommandSelector : public QDialog
     Q_OBJECT
 
 public:
-    explicit CommandSelector(Module* parent);
+    explicit CommandSelector(std::shared_ptr<Module> parent);
     ~CommandSelector();
 
     XmlObject toXmlObject(XmlObject& obj);
@@ -50,17 +50,17 @@ private:
     void setupUi();
 
     QString currentMessage;
-    QVBoxLayout* outerLayout;
-    QLineEdit *lineEdit, *continuosTimeoutEdit;
-    QComboBox* messagesListComboBox;
-    QMap<QString, MessageFormElement*> formElements;
-    QGridLayout* formGridLayout;
-    QPushButton* sendButton;
-    QCheckBox* continuosCheck;
+    std::unique_ptr<QVBoxLayout> outerLayout;
+    std::unique_ptr<QLineEdit> lineEdit, continuosTimeoutEdit;
+    std::unique_ptr<QComboBox> messagesListComboBox;
+    QMap<QString, std::unique_ptr<MessageFormElement>> formElements;
+    std::unique_ptr<QGridLayout> formGridLayout;
+    std::unique_ptr<QPushButton> sendButton;
+    std::unique_ptr<QCheckBox> continuosCheck;
 
     bool selected = false;
     QString selectedLabel;
     Message selectedMessage;
 
-    Module* parent;
+    std::shared_ptr<Module> parent;
 };