diff --git a/citation-resolve.cabal b/citation-resolve.cabal
--- a/citation-resolve.cabal
+++ b/citation-resolve.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                citation-resolve
-version:             0.4
+version:             0.4.1
 synopsis:            convert document IDs such as DOI, ISBN, arXiv ID to bibliographic reference.
 description:         
   This modules provides a way to convert document identifiers, such
@@ -92,7 +92,6 @@
                     
   Build-Depends: 
       base >=4.5 && < 5
-    , binary-search
     , hspec >= 1.3
     , QuickCheck >= 2.5
 
diff --git a/src/Text/CSL/Input/Identifier.hs b/src/Text/CSL/Input/Identifier.hs
--- a/src/Text/CSL/Input/Identifier.hs
+++ b/src/Text/CSL/Input/Identifier.hs
@@ -14,10 +14,13 @@
        (resolveEither, resolve, withDatabaseFile, Database(..), database, databaseMap, HasDatabase(..))
        where
 
+import qualified Control.Lens as Lens
 import           Control.Monad.IO.Class
 import           Control.Monad.State as State
 import           Control.Monad.Trans.Either
 import           Data.Default
+import qualified Data.Map as Map
+import qualified Data.Text as Text
 import           Text.CSL.Reference (emptyReference, Reference)
 import           Text.CSL.Input.Identifier.Internal
 
@@ -45,6 +48,23 @@
 resolve :: (MonadIO m, MonadState s m, HasDatabase s) => String -> m Reference
 resolve = liftM (either (const emptyReference) id) . runEitherT . resolveEither
 
+
+-- | Access the resolver database and generate the BibTeX item string for the document,
+--   using the url as the citation-key.
+
+toBibTeXItem :: (MonadIO m, MonadState s m, HasDatabase s) => String -> m Text.Text
+toBibTeXItem url = do 
+  _ <- resolve url
+  dbMap <- Lens.use databaseMap
+  let ret = case Map.lookup url dbMap of
+        Nothing -> ""
+        Just str -> let (s0,s1) = break (=='{') str
+                        (_,s2) = break (==',') s1
+                    in s0 ++ "{" ++ url ++ s2
+          
+  return $ Text.pack ret
+
+
 -- | Resolve the document id using the default database.
 
 resolveDef :: String -> IO Reference
@@ -52,4 +72,5 @@
   fn <- getDataFileName "default.db"
   let go = withDatabaseFile fn $ resolve url
   State.evalStateT go (def :: Database)
+
 
