diff --git a/System/USB/IDDB/Base.hs b/System/USB/IDDB/Base.hs
--- a/System/USB/IDDB/Base.hs
+++ b/System/USB/IDDB/Base.hs
@@ -24,13 +24,13 @@
     )
     where
 
-import Data.Binary (Binary(..), Get)
+import Data.Binary ( Binary(..), Get )
 
 import qualified Data.IntMap as IM
 import qualified Data.Map    as MP
 
 #ifdef BUILD_WITH_CABAL
-import Paths_usb_id_database (getDataFileName)
+import Paths_usb_id_database ( getDataFileName )
 #else
 getDataFileName :: FilePath -> IO FilePath
 getDataFileName = return
diff --git a/System/USB/IDDB/LinuxUsbIdRepo.hs b/System/USB/IDDB/LinuxUsbIdRepo.hs
--- a/System/USB/IDDB/LinuxUsbIdRepo.hs
+++ b/System/USB/IDDB/LinuxUsbIdRepo.hs
@@ -5,30 +5,32 @@
     , fromWeb
     ) where
 
-import Control.Monad        (fmap)
-import Data.Maybe           (fromJust)
-import Network.Download     (openURIString)
-import Numeric              (readHex)
+import Control.Monad        ( fmap )
+import Data.List            ( lines, unlines, isPrefixOf )
+import Data.Maybe           ( fromJust )
+import Network.Download     ( openURIString )
+import Numeric              ( readHex )
 import Parsimony
-import Parsimony.Char       (char, hexDigit, spaces, tab)
-import System.IO            (FilePath, readFile)
+import Parsimony.Char       ( char, hexDigit, spaces, tab )
+import System.IO            ( FilePath, readFile )
 import System.USB.IDDB.Base
-import System.USB.IDDB.Misc (eitherMaybe, swap, restOfLine)
+import System.USB.IDDB.Misc ( eitherMaybe, swap, restOfLine )
 
-import qualified Data.IntMap as IM (IntMap, fromList)
-import qualified Data.Map    as MP (Map,    fromList)
+import qualified Data.IntMap as IM ( IntMap, fromList )
+import qualified Data.Map    as MP ( Map,    fromList )
 
 
 -- |Construct a database from a string in the format used by
 -- <http://linux-usb.org>.
 parseDb :: String -> Maybe IDDB
-parseDb = eitherMaybe . parse dbParser
+parseDb = eitherMaybe . parse dbParser . stripComments
+    where
+      stripComments :: String -> String
+      stripComments = unlines . filter (not . isPrefixOf "#") . lines
 
 dbParser :: Parser String IDDB
 dbParser = do spaces
-              comments
               (vendorNameId, vendorIdName, productDB) <- lexeme vendorSection
-              comments
               classDB <- classSection
 
               return IDDB { dbVendorNameId = vendorNameId
@@ -41,12 +43,6 @@
       lexeme p = do x <- p
                     spaces
                     return x
-
-      comment :: Parser String String
-      comment = char '#' >> restOfLine
-
-      comments :: Parser String [String]
-      comments = many $ lexeme comment
 
       hexId :: Num n => Int -> Parser String n
       hexId d = do ds <- count d hexDigit
diff --git a/System/USB/IDDB/UsbDotOrg.hs b/System/USB/IDDB/UsbDotOrg.hs
--- a/System/USB/IDDB/UsbDotOrg.hs
+++ b/System/USB/IDDB/UsbDotOrg.hs
@@ -5,23 +5,19 @@
     , fromWeb
     ) where
 
-import Control.Monad        (fmap)
-import Data.Maybe           (fromJust)
-import Network.Download     (openURIString)
+import Control.Monad        ( fmap )
+import Data.Maybe           ( fromJust )
+import Network.Download     ( openURIString )
 import Parsimony
-import Parsimony.Char       (char, digit)
-import System.IO            (FilePath, readFile)
-import System.USB.IDDB.Base ( IDDB(..)
-                            , VendorID, VendorName
+import Parsimony.Char       ( char, digit )
+import System.IO            ( FilePath, readFile )
+import System.USB.IDDB.Base ( IDDB(..), VendorID, VendorName
                             , getDataFileName
                             )
-import System.USB.IDDB.Misc ( eitherMaybe
-                            , swap
-                            , restOfLine
-                            )
+import System.USB.IDDB.Misc ( eitherMaybe, swap, restOfLine )
 
-import qualified Data.IntMap as IM (fromList, empty)
-import qualified Data.Map    as MP (fromList)
+import qualified Data.IntMap as IM ( fromList, empty )
+import qualified Data.Map    as MP ( fromList )
 
 
 -- |Construct a database from a string in the format used by usb.org.
diff --git a/example.hs b/example.hs
--- a/example.hs
+++ b/example.hs
@@ -26,3 +26,12 @@
           -- from the vendor with ID 0x1d6b.
           putStrLn $ maybe "unknown product name!" (printf "0x%04x")
                    $ productId db 0x1d6b "Audio Gadget"
+
+          putStrLn $ maybe "unknown class" id
+                   $ className db 0xe0
+
+          putStrLn $ maybe "unknown subclass" id
+                   $ subClassName db 0xe0 1
+
+          putStrLn $ maybe "unknown protocol" id
+                   $ protocolName db 0xe0 1 2
diff --git a/usb-id-database.cabal b/usb-id-database.cabal
--- a/usb-id-database.cabal
+++ b/usb-id-database.cabal
@@ -1,5 +1,5 @@
 name:          usb-id-database
-version:       0.3
+version:       0.3.0.1
 cabal-version: >=1.6
 build-type:    Simple
 stability:     provisional
