diff --git a/Data/Concurrent/Queue.hs b/Data/Concurrent/Queue.hs
--- a/Data/Concurrent/Queue.hs
+++ b/Data/Concurrent/Queue.hs
@@ -1,14 +1,14 @@
 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances #-}
-module Data.Concurrent.Queue (TakeQueue(..), PutQueue(..), Take, Put, TakePut, DMVar, newDMVar, newEmptyDMVar) where
+module Data.Concurrent.Queue (TakeQueue(..), PutQueue(..)) where
 
 import Control.Concurrent
 import Control.Concurrent.STM
 import Control.Applicative
 
-class TakeQueue q m | q -> m where
+class TakeQueue q m where
   take :: q a -> m a
 
-class PutQueue q m | q -> m where
+class PutQueue q m  where
   put :: q a -> a -> m ()
 
 instance TakeQueue MVar IO where
@@ -31,33 +31,3 @@
   take = readTChan
 instance PutQueue TChan STM where
   put = writeTChan
-
-newtype Take = Take Take
-newtype Put = Put Put
-newtype TakePut = TakePut TakePut
-
-newtype DMVar d a = DMVar (MVar a)
-
-newDMVar :: a -> IO (DMVar d a)
-newDMVar a = DMVar <$> newMVar a
-
-newEmptyDMVar :: IO (DMVar d a)
-newEmptyDMVar = DMVar <$> newEmptyMVar
-
-takeDMVar :: DMVar d a -> IO a
-takeDMVar (DMVar x) = takeMVar x
-
-putDMVar :: DMVar d a -> a -> IO ()
-putDMVar (DMVar x) a = putMVar x a
-
-
-instance TakeQueue (DMVar TakePut) IO where
-  take = takeDMVar
-instance PutQueue (DMVar TakePut) IO where
-  put = putDMVar
-
-instance TakeQueue (DMVar Take) IO where
-  take = takeDMVar
-
-instance PutQueue (DMVar Put) IO where
-  put = putDMVar
diff --git a/data-concurrent-queue.cabal b/data-concurrent-queue.cabal
--- a/data-concurrent-queue.cabal
+++ b/data-concurrent-queue.cabal
@@ -2,7 +2,7 @@
 -- further documentation, see http://haskell.org/cabal/users-guide/
 
 name:                data-concurrent-queue
-version:             0.1.1.0
+version:             0.3.0.0
 synopsis:            A Library for directional queues
 -- description:         
 license:             MIT
