diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -97,7 +97,7 @@
 
 genFreeze :: Resolver -> Freeze
 genFreeze Resolver{deps, flags} =
-  let pkgs = mapMaybe pick deps
+  let pkgs = unPkgId <$> mapMaybe pick deps
       uniqpkgs = nubOn pkgName pkgs
    in Freeze uniqpkgs flags
   where pick (Hackage p)   = Just p
diff --git a/src/Stackage.hs b/src/Stackage.hs
--- a/src/Stackage.hs
+++ b/src/Stackage.hs
@@ -78,7 +78,7 @@
 -- http://hackage.haskell.org/package/Cabal-2.4.1.0/docs/Distribution-Types-PackageId.html#t:PackageIdentifier
 -- http://hackage.haskell.org/package/Cabal-2.4.1.0/docs/Distribution-Parsec-Class.html#v:simpleParsec
 
-data Dep = Hackage PackageIdentifier
+data Dep = Hackage PkgId
          | SourceDep Git
          deriving (Show)
 
@@ -97,7 +97,7 @@
   , flags    :: Flags
   } deriving (Show)
 
-data NewDep = NewDep PackageIdentifier
+data NewDep = NewDep PkgId
               deriving (Show)
 
 --------------------------------------------------------------------------------
@@ -203,11 +203,10 @@
         Location <$> m .: "location"
 
 instance FromYAML Dep where
-   parseYAML n = (hackage n) <|> (source n)
+   parseYAML n = hackage <|> source
      where
-       hackage = withStr "Hackage" $ \s ->
-         Hackage <$> (hoistMaybe . simpleParse . unpack) s
-       source n' = SourceDep <$> parseYAML n'
+       hackage = Hackage <$> parseYAML n
+       source = SourceDep <$> parseYAML n
 
 instance FromYAML Resolver where
   parseYAML = withMap "Resolver" $ \m -> Resolver
@@ -219,12 +218,15 @@
 instance FromYAML NewDep where
    parseYAML = withMap "NewDep" $ \m -> hackage' =<< m .: "hackage"
      where
-       hackage' = \s -> NewDep <$>
-         (hoistMaybe . simpleParse . unpack)
-         (takeWhile ('@' /=) s)
+       hackage' n = NewDep <$> parseYAML n
 
 instance FromYAML NewResolver where
   parseYAML = withMap "NewResolver" $ \m -> NewResolver
     <$> m .: "compiler"
     <*> m .:? "packages" .!= mempty
     <*> m .:? "flags" .!= (Flags empty)
+
+newtype PkgId = PkgId { unPkgId :: PackageIdentifier } deriving (Show)
+instance FromYAML PkgId where
+  parseYAML = withStr "PackageIdentifier" $ \s ->
+    PkgId <$> (hoistMaybe . simpleParse . unpack) (takeWhile ('@' /=) s)
diff --git a/stackage-to-hackage.cabal b/stackage-to-hackage.cabal
--- a/stackage-to-hackage.cabal
+++ b/stackage-to-hackage.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                stackage-to-hackage
-version:             1.0.0
+version:             1.0.1
 synopsis:            Convert stack.yaml to cabal.project + cabal.project.freeze
 license:             GPL-3.0-or-later
 license-file:        LICENSE
@@ -15,8 +15,8 @@
   for an existing Haskell application that has its build plan defined for
   the stack build tool.
 
-  The user can use the following script to invoke this binary and hpack:
-  [stack2cabal](https://gitlab.com/tseenshe/stackage-to-hackage/blob/master/stack2cabal).
+  The following convenience script invokes stackage-to-hackage and hpack
+  together [stack2cabal](https://gitlab.com/tseenshe/stackage-to-hackage/blob/master/stack2cabal).
 
 source-repository head
   type: git
