diff --git a/language-webidl.cabal b/language-webidl.cabal
--- a/language-webidl.cabal
+++ b/language-webidl.cabal
@@ -1,5 +1,5 @@
 name:               language-webidl
-version:            0.1.3.0
+version:            0.1.3.1
 synopsis:           Parser and Pretty Printer for WebIDL
 description:
     It is intended to replace the old package
@@ -24,6 +24,7 @@
   build-depends:       base >=4.9 && <4.10, parsec, wl-pprint
   hs-source-dirs:      src
   default-language:    Haskell2010
+  ghc-options:         -Wall -fno-warn-missing-signatures -fno-warn-orphans
 
 test-suite language-webidl-test
   type:                exitcode-stdio-1.0
diff --git a/src/Language/WebIDL/PPrint.hs b/src/Language/WebIDL/PPrint.hs
--- a/src/Language/WebIDL/PPrint.hs
+++ b/src/Language/WebIDL/PPrint.hs
@@ -129,7 +129,7 @@
     pretty Unrestricted = text "unrestricted"
 
 instance Pretty IntegerType where
-    pretty (IntegerType mUns width) = prettyMaybe mUns pretty <> pretty width
+    pretty (IntegerType mUns width_) = prettyMaybe mUns pretty <> pretty width_
 
 instance Pretty IntegerWidth where
     pretty Short = text "short"
diff --git a/src/Language/WebIDL/Parser.hs b/src/Language/WebIDL/Parser.hs
--- a/src/Language/WebIDL/Parser.hs
+++ b/src/Language/WebIDL/Parser.hs
@@ -4,15 +4,18 @@
 -}
 
 module Language.WebIDL.Parser (
-  Tag(..), parseIDL
-) where
+  Tag(..), MyParser, ParserState, parseIDL, tryParse, pDef, pExtAttrs, pExtAttr, pPartial, pDictionary,
+  pInterface, pException, pInheritance, pEnum, pEnumValues, pTypedef, pImplementsStatement,
+  pDictionaryMember, pExceptionMember, pMaybeIdent, pInterfaceMember, pConst, pConstType,
+  pAttribute, pOperation, pArg, pArgumentName, pArgumentNameKeyword, pDefault, pQualifier,
+  pSpecial, pReturnType, pConstValue, pBool, pNull, pPrimTy, pIntegerType, pUnsigned, pFloatType,
+  pType, pSingleType, pNonAnyType, pTypeSuffix, pUnionType, pUnionMemberType ) where
 
 import Language.WebIDL.AST
 import Prelude hiding (Enum)
 import Text.ParserCombinators.Parsec
 import Text.Parsec.Language (emptyDef)
 import Text.Parsec (modifyState, SourcePos, getPosition, getState, putState, sourceLine)
-import Control.Monad (void)
 import qualified Text.Parsec.Token as Tok
 
 data ParserState = ParserState {
@@ -38,12 +41,12 @@
 
 type MyParser = CharParser ParserState
 
-testParse :: MyParser a -> String -> Either ParseError a
-testParse p = runParser p initState "webidl"
+tryParse :: MyParser a -> String -> Either ParseError a
+tryParse p = runParser p initState "webidl"
 
 -- | parse IDL source
 parseIDL :: String -> Either ParseError [Definition Tag]
-parseIDL = testParse (pSpaces *> many1 (pDef <* pSpaces))
+parseIDL = tryParse (pSpaces *> many1 (pDef <* pSpaces))
 
 pDef :: MyParser (Definition Tag)
 pDef = try (DefInterface <$> pInterface)
@@ -97,12 +100,12 @@
 pTypedef :: MyParser (Typedef Tag)
 pTypedef = do
   tag <- getTag
-  string "typedef"
+  _ <- string "typedef"
   pSpaces
   ty <- try pType
   pSpaces
   ident <- pIdent
-  semi
+  _ <- semi
   return (Typedef tag ty ident)
 
 pImplementsStatement :: MyParser (ImplementsStatement Tag)
@@ -224,12 +227,13 @@
 
 pIntegerType :: MyParser IntegerType
 pIntegerType = IntegerType <$> pUnsigned <* pSpaces <*> pIntegerWidth
+  where
+    pIntegerWidth = string "short" *> return Short
+                 <|> Long . length <$> many1 (try (string "long" <* pSpaces))
 
 pUnsigned :: MyParser (Maybe Unsigned)
 pUnsigned = optionMaybe (string "unsigned" *> return Unsigned)
 
-pIntegerWidth = string "short" *> return Short
-             <|> Long . length <$> many1 (try (string "long" <* pSpaces))
 
 pFloatType :: MyParser FloatType
 pFloatType =  try (TyFloat <$> pModifier Unrestricted "unrestricted" <* spaces <* string "float")
@@ -271,9 +275,6 @@
 brackets   = Tok.brackets lexer
 braces     = Tok.braces lexer
 angles     = Tok.angles lexer
-reserved   = Tok.reserved lexer
-reservedOp = Tok.reservedOp lexer
-whiteSpace = Tok.whiteSpace lexer
 pIdent     = Ident <$> Tok.identifier lexer
 pInt       = Tok.integer lexer
 pFloat     = Tok.float lexer
@@ -287,12 +288,12 @@
 pComment = try pLineComment <|> pBlockComment
 
 pLineComment = do
-  string "//"
+  _ <- string "//"
   comment <- manyTill anyChar (try newline)
   modifyState (\ps -> ParserState { _comments = _comments ps ++ [comment]})
 
 pBlockComment = do
-  string "/*"
+  _ <- string "/*"
   comment <- manyTill anyChar (try (string "*/"))
   modifyState (\ps -> ParserState { _comments = _comments ps ++ lines comment})
 
