diff --git a/inc/App.hpp b/inc/App.hpp
index 5c98448..96bdc35 100644
--- a/inc/App.hpp
+++ b/inc/App.hpp
@@ -21,6 +21,6 @@ private:
   Rectangle likeBox;
   Rectangle disLikeBox;
 
-  Dna *dnaShow = nullptr;
+  Unit unit;
   DnaManager manager;
 };
diff --git a/inc/values/DnaManager.hpp b/inc/values/DnaManager.hpp
index a90cab5..a1df4ae 100644
--- a/inc/values/DnaManager.hpp
+++ b/inc/values/DnaManager.hpp
@@ -1,10 +1,25 @@
 #include "values/Dna.hpp"
 
+enum Liked
+{
+  yes,
+  no,
+  tbd
+};
+
+struct Unit
+{
+  Dna *dna;
+  Liked liked;
+};
+
 class DnaManager
 {
 public:
-  DnaManager() = default;
-  Dna *next(bool prevLiked);
+  void init();
+  void deinit();
+  Unit next();
+  void like(Unit unit);
 
 private:
   Dna dna;
diff --git a/src/App.cpp b/src/App.cpp
index a4b96c1..b5f70a7 100644
--- a/src/App.cpp
+++ b/src/App.cpp
@@ -17,9 +17,9 @@ void App::init(int screenWidth, int screenHeight)
   mrand::setSeed(1);
 
   canvasTexure = LoadRenderTexture(screenWidth, screenWidth);
-  dnaShow = manager.next(false);
-  canvas.newGen(canvasTexure, dnaShow);
-
+  manager.init();
+  unit = manager.next();
+  canvas.newGen(canvasTexure, unit.dna);
   float posY = (screenHeight - screenWidth) / 2.0f;
   float recPosX = screenWidth * 0.2f;
   dest = {0, posY, (float)screenWidth, (float)screenWidth};
@@ -35,13 +35,17 @@ void App::update()
     Vector2 mouse = GetMousePosition();
     if (CheckCollisionPointRec(mouse, disLikeBox))
     {
-      dnaShow = manager.next(false);
-      canvas.newGen(canvasTexure, dnaShow);
+      unit.liked = Liked::no;
+      manager.like(unit);
+      unit = manager.next();
+      canvas.newGen(canvasTexure, unit.dna);
     }
     if (CheckCollisionPointRec(mouse, likeBox))
     {
-      dnaShow = manager.next(true);
-      canvas.newGen(canvasTexure, dnaShow);
+      unit.liked = Liked::yes;
+      manager.like(unit);
+      unit = manager.next();
+      canvas.newGen(canvasTexure, unit.dna);
     }
   }
 }
@@ -59,4 +63,5 @@ void App::deinit()
 {
   UnloadRenderTexture(canvasTexure);
   canvas.deinit();
+  manager.deinit();
 }
\ No newline at end of file
diff --git a/src/values/DnaManager.cpp b/src/values/DnaManager.cpp
index 16dd975..cbd6f6c 100644
--- a/src/values/DnaManager.cpp
+++ b/src/values/DnaManager.cpp
@@ -1,7 +1,19 @@
 #include "values/DnaManager.hpp"
 
-Dna *DnaManager::next(bool prevLiked)
+void DnaManager::init()
+{
+}
+
+void DnaManager::deinit()
+{
+}
+
+Unit DnaManager::next()
 {
   newDna(dna);
-  return &dna;
+  return {&dna, Liked::tbd};
+}
+
+void DnaManager::like(Unit unit)
+{
 }
\ No newline at end of file