diff --git a/quasar.cabal b/quasar.cabal
index 5b08e1d44980fece1abaed3560953b4015c8f33a..76a3a119dbb32c324955f496bf32fa8eb3cc3d37 100644
--- a/quasar.cabal
+++ b/quasar.cabal
@@ -61,6 +61,10 @@ common shared-executable-properties
 library
   import: shared-properties
   exposed-modules:
+    Data.Observable
+    Data.Observable.Delta
+    Data.Observable.ObservableHashMap
+    Data.Observable.ObservablePriority
   hs-source-dirs:
     src
 
@@ -72,5 +76,8 @@ test-suite quasar-test
     hspec,
   main-is: Spec.hs
   other-modules:
+    Data.ObservableSpec
+    Data.Observable.ObservableHashMapSpec
+    Data.Observable.ObservablePrioritySpec
   hs-source-dirs:
     test
diff --git a/src/lib/Qd/Observable.hs b/src/Data/Observable.hs
similarity index 99%
rename from src/lib/Qd/Observable.hs
rename to src/Data/Observable.hs
index 473c9f8ce7b5ea7fe84e79ec59f1ae9814ab18fe..9c8a5ae024b1b75b10ad7809c4a226b879aff44a 100644
--- a/src/lib/Qd/Observable.hs
+++ b/src/Data/Observable.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE UndecidableInstances #-}
 
-module Qd.Observable (
+module Data.Observable (
   Observable(..),
   IsGettable(..),
   IsObservable(..),
@@ -31,7 +31,7 @@ module Qd.Observable (
   waitFor',
 ) where
 
-import Qd.Prelude
+import Prelude
 
 import Control.Concurrent.MVar
 import Control.Exception (Exception)
diff --git a/src/lib/Qd/Observable/Delta.hs b/src/Data/Observable/Delta.hs
similarity index 97%
rename from src/lib/Qd/Observable/Delta.hs
rename to src/Data/Observable/Delta.hs
index caa6c22d87a248e91595dab903586154b28378df..60503634839d18d1630c3c304dc047ca4ea54fe7 100644
--- a/src/lib/Qd/Observable/Delta.hs
+++ b/src/Data/Observable/Delta.hs
@@ -1,7 +1,7 @@
-module Qd.Observable.Delta where
+module Data.Observable.Delta where
 
-import Qd.Observable
-import Qd.Prelude
+import Data.Observable
+import Prelude
 
 --import Conduit
 import qualified Data.HashMap.Strict as HM
diff --git a/src/lib/Qd/Observable/ObservableHashMap.hs b/src/Data/Observable/ObservableHashMap.hs
similarity index 97%
rename from src/lib/Qd/Observable/ObservableHashMap.hs
rename to src/Data/Observable/ObservableHashMap.hs
index a85dff850550bf87a856b4632cc41f73da66f0af..0ddf81579ed42c33bcd28606dada603ecb22f661 100644
--- a/src/lib/Qd/Observable/ObservableHashMap.hs
+++ b/src/Data/Observable/ObservableHashMap.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE ViewPatterns #-}
 
-module Qd.Observable.ObservableHashMap (
+module Data.Observable.ObservableHashMap (
   ObservableHashMap,
   new,
   observeKey,
@@ -10,10 +10,10 @@ module Qd.Observable.ObservableHashMap (
   lookupDelete,
 ) where
 
-import Qd.Observable
-import Qd.Observable.Delta
-import Qd.Prelude hiding (lookup, lookupDelete)
-import Qd.Utils.ExtraT
+import Data.Observable
+import Data.Observable.Delta
+import Prelude hiding (lookup, lookupDelete)
+import Data.Utils.ExtraT
 
 import Control.Concurrent.MVar
 import qualified Data.HashMap.Strict as HM
diff --git a/src/lib/Qd/Observable/ObservablePriority.hs b/src/Data/Observable/ObservablePriority.hs
similarity index 98%
rename from src/lib/Qd/Observable/ObservablePriority.hs
rename to src/Data/Observable/ObservablePriority.hs
index 2e9e74ffcd93573a2f0825c41aaf131b46011898..aa8f6ffa19e5f79a476aff97a79e7ce7a64c69d1 100644
--- a/src/lib/Qd/Observable/ObservablePriority.hs
+++ b/src/Data/Observable/ObservablePriority.hs
@@ -1,11 +1,11 @@
-module Qd.Observable.ObservablePriority (
+module Data.Observable.ObservablePriority (
   ObservablePriority,
   create,
   insertValue,
 ) where
 
-import Qd.Observable
-import Qd.Prelude
+import Data.Observable
+import Prelude
 
 import Control.Concurrent.MVar
 import qualified Data.HashMap.Strict as HM
diff --git a/test/Qd/Observable/ObservableHashMapSpec.hs b/test/Data/Observable/ObservableHashMapSpec.hs
similarity index 96%
rename from test/Qd/Observable/ObservableHashMapSpec.hs
rename to test/Data/Observable/ObservableHashMapSpec.hs
index c7936033b65f2833bee75adb0a22241f96886413..1fa262af60998884e8bc214c06914dd48c0a2ada 100644
--- a/test/Qd/Observable/ObservableHashMapSpec.hs
+++ b/test/Data/Observable/ObservableHashMapSpec.hs
@@ -1,8 +1,8 @@
-module Qd.Observable.ObservableHashMapSpec where
+module Data.Observable.ObservableHashMapSpec where
 
-import Qd
-import Qd.Observable.Delta
-import qualified Qd.Observable.ObservableHashMap as OM
+import Data
+import Data.Observable.Delta
+import qualified Data.Observable.ObservableHashMap as OM
 
 import Control.Monad (void)
 import qualified Data.HashMap.Strict as HM
diff --git a/test/Qd/Observable/ObservablePrioritySpec.hs b/test/Data/Observable/ObservablePrioritySpec.hs
similarity index 86%
rename from test/Qd/Observable/ObservablePrioritySpec.hs
rename to test/Data/Observable/ObservablePrioritySpec.hs
index d33701dcae75be80252c0a5cb560bb41ea184e47..a0111d18f3b6984fcbe1d8160762ccfc80241936 100644
--- a/test/Qd/Observable/ObservablePrioritySpec.hs
+++ b/test/Data/Observable/ObservablePrioritySpec.hs
@@ -1,8 +1,8 @@
-module Qd.Observable.ObservablePrioritySpec where
+module Data.Observable.ObservablePrioritySpec where
 
-import Qd.Observable
-import Qd.Observable.ObservablePriority (ObservablePriority)
-import qualified Qd.Observable.ObservablePriority as OP
+import Data.Observable
+import Data.Observable.ObservablePriority (ObservablePriority)
+import qualified Data.Observable.ObservablePriority as OP
 
 import Control.Monad (void)
 import Data.IORef
diff --git a/test/Qd/ObservableSpec.hs b/test/Data/ObservableSpec.hs
similarity index 96%
rename from test/Qd/ObservableSpec.hs
rename to test/Data/ObservableSpec.hs
index 62b469954889b9f20416c7f6401717a69c47f04b..a5d6ecab73820f3824a4ad4947f611041d0bddf7 100644
--- a/test/Qd/ObservableSpec.hs
+++ b/test/Data/ObservableSpec.hs
@@ -1,6 +1,6 @@
-module Qd.ObservableSpec where
+module Data.ObservableSpec where
 
-import Qd.Observable
+import Data.Observable
 
 import Control.Monad (void)
 import Data.IORef