diff --git a/src/app/rmrf.cpp b/src/app/rmrf.cpp
index f23f389abea8cc0b4f62b58aeffccddb259ba396..1d946059283198e1faa32c2197e7e9b67189d79f 100644
--- a/src/app/rmrf.cpp
+++ b/src/app/rmrf.cpp
@@ -1,11 +1,7 @@
-#include "../ui/View.h"
-
-namespace rmrf {
+#include "ui/View.h"
 
 int main() {
-    ui::init_ui();
-    ui::destroy_ui();
-    return 0;
-}
+    auto ui_handle = std::make_shared<rmrf::ui::display>();
 
+    return 0;
 }
diff --git a/src/ui/View.ldflags b/src/app/rmrf.ldflags
similarity index 100%
rename from src/ui/View.ldflags
rename to src/app/rmrf.ldflags
diff --git a/src/ui/View.cpp b/src/ui/View.cpp
index b86898e5c7a080cc70189198dfc91d8ee599b4ca..f39ecc3592587164bacb3cd3a7f7e7f8ac3ac988 100644
--- a/src/ui/View.cpp
+++ b/src/ui/View.cpp
@@ -1,17 +1,15 @@
-#include <ncurses/ncursesw.h>
+#include <ncursesw/ncurses.h>
 
-#include "View.h"
+#include "ui/View.h"
 
-namespace rmrf {
-namespace ui {
+namespace rmrf::ui {
 
-void init_ui() {
+display::display() {
     initscr();
 }
 
-void destroy_ui() {
+display::~display() {
     endwin();
 }
 
 }
-}
diff --git a/src/ui/View.h b/src/ui/View.h
index ef6ff6323a20264e4fbf771dff08811c8b5459c2..afaf84d169f0810d31cc31d3a06f7f7139f967d4 100644
--- a/src/ui/View.h
+++ b/src/ui/View.h
@@ -1,12 +1,12 @@
-#ifndef VIEW_H
-#define VIEW_H
+#pragma once
 
-namespace rmrf {
-namespace ui {
+#include <memory>
 
-void init_ui(void);
-void destroy_ui(void);
+namespace rmrf::ui {
+
+struct display : std::enable_shared_from_this<display> {
+    display();
+    ~display();
+};
 
 }
-}
-#endif