diff --git a/src/lib/Qd/Observable/ObservableMap.hs b/src/lib/Qd/Observable/ObservableMap.hs
index 52bb5ef7e924db105c211bfce0bdc14c2cbfde9b..2eb8adbb1f0a6c236888299cf06cb13d97f403ba 100644
--- a/src/lib/Qd/Observable/ObservableMap.hs
+++ b/src/lib/Qd/Observable/ObservableMap.hs
@@ -10,10 +10,9 @@ module Qd.Observable.ObservableMap (
 ) where
 
 import Qd.Observable
+import Qd.Utils.GetT
 
 import Control.Concurrent.MVar
-import Data.Bifunctor
-import Data.Hashable (Hashable)
 import qualified Data.HashMap.Strict as HM
 import Data.Unique
 import Prelude hiding (lookup, lookupDelete)
@@ -25,14 +24,6 @@ data ObservableValue v = ObservableValue {
   subscribers :: (HM.HashMap Unique (ObservableMessage v -> IO ()))
 }
 
-newtype GetT s m r = GetT {
-  runGetT :: m (r, s)
-}
-instance Functor m => Functor (GetT s m) where
-  fmap :: (a -> b) -> (GetT s m) a -> (GetT s m) b
-  fmap fn = GetT . fmap (first fn) . runGetT
-  
-
 modifyValue :: forall k v a. (Eq k, Hashable k) => (ObservableValue v -> IO (ObservableValue v, a)) -> k -> ObservableMap k v -> IO a
 modifyValue f k (ObservableMap mvar) = modifyMVar mvar $ \hashmap -> runGetT (HM.alterF update k hashmap)
   where