diff --git a/Network/Multipart.hs b/Network/Multipart.hs
--- a/Network/Multipart.hs
+++ b/Network/Multipart.hs
@@ -22,6 +22,7 @@
     , parseMultipartBody, hGetMultipartBody
     , showMultipartBody
      -- * Headers
+    , Headers , HeaderName(..)
     , ContentType(..), ContentTransferEncoding(..)
     , ContentDisposition(..)
     , parseContentType
diff --git a/Network/Multipart/Header.hs b/Network/Multipart/Header.hs
--- a/Network/Multipart/Header.hs
+++ b/Network/Multipart/Header.hs
@@ -46,9 +46,7 @@
 import Control.Monad
 import Data.Char
 import Data.List
-
-import Network.CGI.Protocol
-import Network.CGI
+import Data.Monoid
 
 import Text.ParserCombinators.Parsec
 
@@ -56,6 +54,19 @@
 -- * Headers
 --
 
+-- | HTTP headers.
+type Headers = [(HeaderName, String)]
+
+-- | A string with case insensitive equality and comparisons.
+newtype HeaderName = HeaderName String deriving (Show)
+
+instance Eq HeaderName where
+    HeaderName x == HeaderName y = map toLower x == map toLower y
+
+instance Ord HeaderName where
+    HeaderName x `compare` HeaderName y = map toLower x `compare` map toLower y
+
+
 class HeaderValue a where
     parseHeaderValue :: Parser a
     prettyHeaderValue :: a -> String
@@ -120,6 +131,44 @@
      p_value <- litStr <|> p_token
      return (map toLower p_name, p_value)
 
+--
+-- * Content type
+--
+
+-- | A MIME media type value.
+--   The 'Show' instance is derived automatically.
+--   Use 'showContentType' to obtain the standard
+--   string representation.
+--   See <http://www.ietf.org/rfc/rfc2046.txt> for more
+--   information about MIME media types.
+data ContentType =
+	ContentType {
+                     -- | The top-level media type, the general type
+                     --   of the data. Common examples are
+                     --   \"text\", \"image\", \"audio\", \"video\",
+                     --   \"multipart\", and \"application\".
+                     ctType :: String,
+                     -- | The media subtype, the specific data format.
+                     --   Examples include \"plain\", \"html\",
+                     --   \"jpeg\", \"form-data\", etc.
+                     ctSubtype :: String,
+                     -- | Media type parameters. On common example is
+                     --   the charset parameter for the \"text\"
+                     --   top-level type, e.g. @(\"charset\",\"ISO-8859-1\")@.
+                     ctParameters :: [(String, String)]
+                    }
+    deriving (Show, Read)
+
+instance Eq ContentType where
+    x == y = ctType x `caseInsensitiveEq` ctType y
+             && ctSubtype x `caseInsensitiveEq` ctSubtype y
+             && ctParameters x == ctParameters y
+
+instance Ord ContentType where
+    x `compare` y = mconcat [ctType x `caseInsensitiveCompare` ctType y,
+                             ctSubtype x `caseInsensitiveCompare` ctSubtype y,
+                             ctParameters x `compare` ctParameters y]
+
 instance HeaderValue ContentType where
     parseHeaderValue =
         do _ <- many ws1
@@ -130,6 +179,15 @@
            return $ ContentType (map toLower c_type) (map toLower c_subtype) c_parameters
     prettyHeaderValue (ContentType x y ps) = x ++ "/" ++ y ++ showParameters ps
 
+
+-- | Parse the standard representation of a content-type.
+--   If the input cannot be parsed, this function calls
+--   'fail' with a (hopefully) informative error message.
+parseContentType :: Monad m => String -> m ContentType
+parseContentType = parseM parseHeaderValue "Content-type"
+
+showContentType :: ContentType -> String
+showContentType = prettyHeaderValue
 
 getContentType :: Monad m => Headers -> m ContentType
 getContentType = getHeaderValue "content-type"
diff --git a/multipart.cabal b/multipart.cabal
--- a/multipart.cabal
+++ b/multipart.cabal
@@ -1,5 +1,5 @@
 name:                multipart
-version:             0.1.0.1
+version:             0.1.1
 synopsis:            A partial fork of the cgi package exposing the multipart module
 description:         A partial fork of the cgi package exposing the multipart module
 copyright:           Bjorn Bringert, Andy Gill, Anders Kaseorg, Ian Lynagh, Erik Meijer, Sven Panne, Jeremy Shaw
@@ -23,9 +23,5 @@
   other-modules:     Network.Multipart.Header
   build-depends:
       base >= 3 && < 5
-      -- Reject versions depending on monads-tf
-    , MonadCatchIO-mtl == 0.3.0.5
-    , MonadCatchIO-transformers == 0.3.0.*
     , bytestring
-    , cgi >= 3001.1.8 && < 3001.1.9
     , parsec >= 2.0
