diff --git a/src/database/graph_db.hpp b/src/database/graph_db.hpp
index def0bd406..042f8d45c 100644
--- a/src/database/graph_db.hpp
+++ b/src/database/graph_db.hpp
@@ -52,6 +52,9 @@ class GraphDb {
    * Database object can't be copied.
    */
   GraphDb(const GraphDb &db) = delete;
+  GraphDb(GraphDb &&other) = default;
+  GraphDb &operator=(const GraphDb &other) = default;
+  GraphDb &operator=(GraphDb &&other) = default;
 
   /**
    * Starts database snapshooting.
diff --git a/src/dbms/dbms.cpp b/src/dbms/dbms.cpp
index 86853d563..ab8f4a326 100644
--- a/src/dbms/dbms.cpp
+++ b/src/dbms/dbms.cpp
@@ -24,6 +24,6 @@ std::unique_ptr<GraphDbAccessor> Dbms::active(const std::string &name,
 
   // set and return active db
   auto &db = it->second;
-  active_db.store(&db, std::memory_order_release);
+  active_db.store(&db);
   return std::make_unique<GraphDbAccessor>(db);
 }
diff --git a/src/threading/task.hpp b/src/threading/task.hpp
deleted file mode 100644
index 1a00f27cf..000000000
--- a/src/threading/task.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#pragma once
-
-#include <iostream>
-
-#include "io/uv/uvloop.hpp"
-#include "pool.hpp"
-#include "utils/placeholder.hpp"
-
-class Task {
-  template <class T>
-  using work_t = std::function<T(void)>;
-
-  template <class T>
-  using after_work_t = std::function<void(T)>;
-
-  template <class T>
-  struct Work {
-    Work(work_t<T> work, after_work_t<T> after_work)
-        : work(std::move(work)), after_work(std::move(after_work)) {
-      req.data = static_cast<void*>(this);
-    }
-
-    void operator()() { result.set(std::move(work())); }
-
-    work_t<T> work;
-    after_work_t<T> after_work;
-
-    Placeholder<T> result;
-
-    uv_work_t req;
-
-    static void work_cb(uv_work_t* req) {
-      auto& work = *static_cast<Work<T>*>(req->data);
-      work();
-    }
-
-    static void after_work_cb(uv_work_t* req, int) {
-      auto work = static_cast<Work<T>*>(req->data);
-
-      work->after_work(std::move(work->result.get()));
-
-      delete work;
-    }
-  };
-
- public:
-  using sptr = std::shared_ptr<Task>;
-
-  Task(uv::UvLoop::sptr loop) : loop(loop) {}
-
-  Task(Task&) = delete;
-  Task(Task&&) = delete;
-
-  template <class F1, class F2>
-  void run(F1&& work, F2&& after_work) {
-    using T = decltype(work());
-
-    auto w = new Work<T>(std::forward<F1>(work), std::forward<F2>(after_work));
-
-    uv_queue_work(*loop, &w->req, Work<T>::work_cb, Work<T>::after_work_cb);
-  }
-
- private:
-  uv::UvLoop::sptr loop;
-};