diff --git a/app/Parser.hs b/app/Parser.hs
--- a/app/Parser.hs
+++ b/app/Parser.hs
@@ -106,4 +106,4 @@
 
 
 version :: String
-version = "protobuf-simple-protoc 0.1.1.0"
+version = "protobuf-simple-protoc 0.1.1.1"
diff --git a/protobuf-simple.cabal b/protobuf-simple.cabal
--- a/protobuf-simple.cabal
+++ b/protobuf-simple.cabal
@@ -3,7 +3,7 @@
 
 name:                protobuf-simple
 synopsis:            Simple Protocol Buffers library (proto2)
-version:             0.1.1.0
+version:             0.1.1.1
 homepage:            https://github.com/sru-systems/protobuf-simple
 license:             MIT
 license-file:        LICENSE
diff --git a/src/Data/ProtoBuf/WireFormat.hs b/src/Data/ProtoBuf/WireFormat.hs
--- a/src/Data/ProtoBuf/WireFormat.hs
+++ b/src/Data/ProtoBuf/WireFormat.hs
@@ -149,14 +149,14 @@
 import Data.ByteString.Lazy (ByteString)
 import Data.Foldable (forM_)
 import Data.Int (Int32, Int64)
-import Data.ProtoBuf.Default
-import Data.ProtoBuf.FieldNumber
-import Data.ProtoBuf.Mergeable
-import Data.ProtoBuf.Required
-import Data.ProtoBuf.WireEnum
-import Data.ProtoBuf.WireMessage
-import Data.ProtoBuf.WireTag
-import Data.ProtoBuf.WireType
+import Data.ProtoBuf.Default (Default(..))
+import Data.ProtoBuf.FieldNumber (fromFieldNumber, toFieldNumber, FieldNumber(..))
+import Data.ProtoBuf.Mergeable (Mergeable(..))
+import Data.ProtoBuf.Required (Required(..))
+import Data.ProtoBuf.WireEnum (WireEnum(..))
+import Data.ProtoBuf.WireMessage (WireMessage(..))
+import Data.ProtoBuf.WireTag (fromWireTag, toWireTag, WireTag(..))
+import Data.ProtoBuf.WireType (fromWireType, toWireType, WireType(..))
 import Data.Sequence (Seq, (|>))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Encoding (decodeUtf8', encodeUtf8)
diff --git a/src/Data/ProtoBuf/WireTag.hs b/src/Data/ProtoBuf/WireTag.hs
--- a/src/Data/ProtoBuf/WireTag.hs
+++ b/src/Data/ProtoBuf/WireTag.hs
@@ -14,8 +14,8 @@
 
 
 import Data.Bits ((.|.))
-import Data.ProtoBuf.FieldNumber
-import Data.ProtoBuf.WireType
+import Data.ProtoBuf.FieldNumber (fromFieldNumber, toFieldNumber, FieldNumber)
+import Data.ProtoBuf.WireType (fromWireType, toWireType, WireType)
 import Data.Word (Word32)
 
 
diff --git a/src/Data/ProtoBufInt.hs b/src/Data/ProtoBufInt.hs
--- a/src/Data/ProtoBufInt.hs
+++ b/src/Data/ProtoBufInt.hs
@@ -21,15 +21,15 @@
     ) where
 
 
-import Data.ProtoBuf.Default
-import Data.ProtoBuf.FieldNumber
-import Data.ProtoBuf.Mergeable
-import Data.ProtoBuf.Required
-import Data.ProtoBuf.WireEnum
+import Data.ProtoBuf.Default (Default(..))
+import Data.ProtoBuf.FieldNumber (fromFieldNumber, toFieldNumber, FieldNumber(..))
+import Data.ProtoBuf.Mergeable (Mergeable(..))
+import Data.ProtoBuf.Required (Required(..))
+import Data.ProtoBuf.WireEnum (WireEnum(..))
 import Data.ProtoBuf.WireFormat
-import Data.ProtoBuf.WireMessage
-import Data.ProtoBuf.WireTag
-import Data.ProtoBuf.WireType
+import Data.ProtoBuf.WireMessage (WireMessage(..))
+import Data.ProtoBuf.WireTag (fromWireTag, toWireTag, WireTag(..))
+import Data.ProtoBuf.WireType (fromWireType, toWireType, WireType(..))
 
 import Data.Sequence (Seq, (|>))
 
diff --git a/src/Parser/EnumGenerator.hs b/src/Parser/EnumGenerator.hs
--- a/src/Parser/EnumGenerator.hs
+++ b/src/Parser/EnumGenerator.hs
@@ -12,13 +12,20 @@
 
 import Control.Monad.State (State)
 import Data.List (foldl', groupBy, intersperse, sortOn)
-import Data.Monoid ((<>))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder, fromString, toLazyText)
 import Parser.EnumDesc (EnumDesc)
 import Parser.EnumValueDesc (EnumValueDesc)
 import Parser.FileDesc (FileDesc)
 import Parser.GeneratorUtils
+    ( GenState,
+      getComment,
+      getUnqualifiedImport,
+      getQualifiedAsImport,
+      empty,
+      nl,
+      tab
+    )
 
 import qualified Parser.EnumDesc       as EnumDesc
 import qualified Parser.EnumValueDesc  as EnumValueDesc
diff --git a/src/Parser/FileWriter.hs b/src/Parser/FileWriter.hs
--- a/src/Parser/FileWriter.hs
+++ b/src/Parser/FileWriter.hs
@@ -11,7 +11,7 @@
     ) where
 
 import Data.Text.Lazy.IO (writeFile)
-import Parser.CodeInfo
+import Parser.CodeInfo (CodeInfo(filename, code, directories))
 import System.Directory (createDirectoryIfMissing)
 import System.FilePath  ((</>))
 import Prelude hiding (writeFile)
diff --git a/src/Parser/Generator.hs b/src/Parser/Generator.hs
--- a/src/Parser/Generator.hs
+++ b/src/Parser/Generator.hs
@@ -14,11 +14,16 @@
 import Control.Monad.State (State, execState, get, put)
 import Data.List (foldl')
 import Data.List.Split (splitOn)
-import Parser.CodeInfo
+import Parser.CodeInfo (CodeInfo(CodeInfo))
 import Parser.EnumDesc (EnumDesc)
 import Parser.EnumGenerator (getEnumCode)
 import Parser.FileDesc (FileDesc)
 import Parser.GeneratorUtils
+    ( MessageSet,
+      EnumSet,
+      GenState(GenState, codeInfos),
+      getNamespace
+    )
 import Parser.MessageDesc (MessageDesc)
 import Parser.MessageGenerator (getMessageCode)
 import System.FilePath (joinPath)
diff --git a/src/Parser/GeneratorUtils.hs b/src/Parser/GeneratorUtils.hs
--- a/src/Parser/GeneratorUtils.hs
+++ b/src/Parser/GeneratorUtils.hs
@@ -10,10 +10,9 @@
 
 import Control.Monad.State (State)
 import Data.Maybe (fromMaybe)
-import Data.Monoid ((<>))
 import Data.Set (Set)
 import Data.Text.Lazy.Builder (Builder, fromString, singleton)
-import Parser.CodeInfo
+import Parser.CodeInfo (CodeInfo)
 import Parser.FieldDesc (FieldDesc)
 import Parser.FileDesc (FileDesc)
 
diff --git a/src/Parser/MessageGenerator.hs b/src/Parser/MessageGenerator.hs
--- a/src/Parser/MessageGenerator.hs
+++ b/src/Parser/MessageGenerator.hs
@@ -12,13 +12,26 @@
 
 import Control.Monad.State (State, get)
 import Data.List (foldl', intersperse)
-import Data.Monoid ((<>))
 import Data.Text.Lazy (Text)
 import Data.Text.Lazy.Builder (Builder, fromString, toLazyText)
 import Parser.CaseUtils (toPascal)
 import Parser.FieldDesc (FieldDesc)
 import Parser.FileDesc (FileDesc)
 import Parser.GeneratorUtils
+    ( Packed,
+      GenState,
+      isEnum,
+      isPacked,
+      getComment,
+      getNamespace,
+      getUnqualifiedImport,
+      getQualifiedImport,
+      getQualifiedAsImport,
+      empty,
+      nl,
+      space,
+      tab
+    )
 import Parser.MessageDesc (MessageDesc)
 
 import qualified Parser.FieldDesc    as FieldDesc
diff --git a/src/Parser/ProtoParser.hs b/src/Parser/ProtoParser.hs
--- a/src/Parser/ProtoParser.hs
+++ b/src/Parser/ProtoParser.hs
@@ -22,6 +22,28 @@
 import Parser.OptimizeMode (OptimizeMode)
 import System.FilePath (dropExtensions, splitFileName)
 import Text.Parsec
+    ( anyChar,
+      char,
+      digit,
+      hexDigit,
+      letter,
+      noneOf,
+      octDigit,
+      oneOf,
+      string,
+      choice,
+      eof,
+      many1,
+      manyTill,
+      option,
+      (<?>),
+      (<|>),
+      lookAhead,
+      many,
+      parse,
+      try,
+      Parsec
+    )
 
 import qualified Parser.CaseUtils      as CU
 import qualified Parser.EnumDesc       as EnumDesc
@@ -59,8 +81,11 @@
 comments :: FileDesc -> Parsec String u FileDesc
 comments s = do
   void $ choice
-    [ string "//" *> manyTill anyChar (void eol  <|> eof)
-    , many1 (oneOf " \t\n\r")
+    [ char '/' *> choice
+      [ char '/' *> manyTill anyChar (void eol <|> eof)
+      , char '*' *> manyTill anyChar (try (string "*/"))
+      ]
+    , many1 (oneOf " \t\n\t")
     ]
   return s
 
diff --git a/test/Data/ProtoBuf/ZigZagSpec.hs b/test/Data/ProtoBuf/ZigZagSpec.hs
--- a/test/Data/ProtoBuf/ZigZagSpec.hs
+++ b/test/Data/ProtoBuf/ZigZagSpec.hs
@@ -3,9 +3,9 @@
     , spec
     ) where
 
-import Data.ProtoBuf.ZigZag
-import Test.Hspec
-import Test.QuickCheck
+import Data.ProtoBuf.ZigZag (decode32, decode64, encode32, encode64)
+import Test.Hspec (Spec, hspec, describe, it)
+import Test.QuickCheck (Testable(property))
 import Test.QuickCheck.Instances ()
 
 
diff --git a/test/Data/ProtoBufSpec.hs b/test/Data/ProtoBufSpec.hs
--- a/test/Data/ProtoBufSpec.hs
+++ b/test/Data/ProtoBufSpec.hs
@@ -7,11 +7,11 @@
     ) where
 
 import Data.ByteString.Lazy (ByteString, pack, readFile)
-import Data.ProtoBuf (decode, encode)
+import Data.ProtoBuf.WireFormat (decode, encode)
 import Prelude hiding (Enum, readFile)
 import System.FilePath ((</>))
-import Test.Hspec
-import Test.QuickCheck
+import Test.Hspec (Spec, hspec, context, describe, it, shouldBe, SpecWith)
+import Test.QuickCheck (elements, Arbitrary(arbitrary), Testable(property))
 import Test.QuickCheck.Instances ()
 
 import Types.BoolList (BoolList(..))
diff --git a/test/Parser/ProtoParserSpec.hs b/test/Parser/ProtoParserSpec.hs
--- a/test/Parser/ProtoParserSpec.hs
+++ b/test/Parser/ProtoParserSpec.hs
@@ -4,7 +4,7 @@
     ) where
 
 import Parser.ProtoParser  (parseProto)
-import Test.Hspec
+import Test.Hspec (Spec, hspec, describe, it, shouldBe, Expectation)
 
 import qualified Parser.EnumDesc      as EnumDesc
 import qualified Parser.EnumValueDesc as EnumValueDesc
@@ -34,6 +34,16 @@
 
     it "parses leading comments" $
         parseProto "Test.proto" "// Comment test"
+        `shouldParse`
+        FileDesc.new "Test"
+
+
+    it "parses block comments" $
+        parseProto "Test.proto" (unlines
+          [ "/* Line 1 "
+          , " * Line 2 "
+          , " */"
+          ])
         `shouldParse`
         FileDesc.new "Test"
 
