diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,14 @@
+# 0.3.0 (2019-02-05)
+
+## Enhancements
+
+- Use Stack (executable) to get licenses (ec8412b)
+- Use `ls dependencies` instead of `list-dependencies` (4f4d41d)
+
+## Bugs
+
+- Fix incorrect license if package matches a Hackage package (#23)
+
 # 0.2.2 (2018-01-16)
 
 - Allow http-conduit 2.3 (558fe3d)
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -101,6 +101,7 @@
         return (Just package)
 
   maybeDependencies <- getDependencies
+  maybeLicenses <- getLicenses
 
   case maybeDependencies of
     Nothing ->
@@ -108,7 +109,7 @@
 
     Just dependencies -> do
       (dependenciesByLicense', failed) <-
-        orderPackagesByLicense quiet pid dependencies
+        orderPackagesByLicense quiet pid maybeLicenses dependencies
 
       let dependenciesByLicense = fmap (Set.map display) dependenciesByLicense'
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 [![][1]][0]
 
 [0]: https://circleci.com/gh/jpvillaisaza/licensor
-[1]: https://circleci.com/gh/jpvillaisaza/licensor.svg?style=svg
+[1]: https://circleci.com/gh/jpvillaisaza/licensor.svg?style=shield
 
 [![][2]](https://www.stackage.org/lts/package/licensor)
 [![][3]](https://www.stackage.org/nightly/package/licensor)
diff --git a/licensor.cabal b/licensor.cabal
--- a/licensor.cabal
+++ b/licensor.cabal
@@ -1,8 +1,8 @@
 name: licensor
-version: 0.2.2
+version: 0.3.0
 
 build-type: Simple
-cabal-version: >= 1.21
+cabal-version: >= 1.10
 
 license: MIT
 license-file: LICENSE.md
diff --git a/src/Licensor.hs b/src/Licensor.hs
--- a/src/Licensor.hs
+++ b/src/Licensor.hs
@@ -16,6 +16,7 @@
   ( LiLicense(..)
   , LiPackage(..)
   , getDependencies
+  , getLicenses
   , getPackage
   , orderPackagesByLicense
   , version
@@ -116,7 +117,7 @@
 getDependencies :: IO (Maybe (Set PackageIdentifier))
 getDependencies = do
   eitherDeps <-
-    Exception.try $ readProcess "stack" ["list-dependencies", "--separator", "-"] ""
+    Exception.try $ readProcess "stack" ["ls", "dependencies", "--separator", "-"] ""
 
   case eitherDeps of
     Left (_ :: IOError) ->
@@ -126,13 +127,46 @@
       return $ fmap Set.fromList $ sequence $ fmap simpleParse (lines deps)
 
 
+getLicenses :: IO (Maybe [(PackageName, License)])
+getLicenses = do
+  eitherDeps <-
+    Exception.try $ readProcess "stack" ["ls", "dependencies", "--license"] ""
+
+  case eitherDeps of
+    Left (_ :: IOError) ->
+      return Nothing
+
+    Right deps ->
+      return $ sequence $ fmap toNameLicense (lines deps)
+  where
+    toNameLicense dep =
+      case words dep of
+        [name, license] ->
+          (,) <$> simpleParse name <*> simpleParse license
+
+        _ ->
+          Nothing
+
+
 -- |
 --
 --
 
-getPackageLicense :: Bool -> PackageIdentifier -> IO (Maybe LiLicense)
-getPackageLicense quiet p@PackageIdentifier{..} = do
+getPackageLicense
+  :: Bool
+  -> PackageIdentifier
+  -> Maybe [(PackageName, License)]
+  -> IO (Maybe LiLicense)
+getPackageLicense quiet p@PackageIdentifier{..} (Just licenses) = do
   unless quiet (putStr $ display p ++ "...")
+  case lookup pkgName licenses of
+    Just license -> do
+      unless quiet (putStrLn $ display license)
+      return $ Just (LiLicense license)
+    Nothing ->
+      return Nothing
+getPackageLicense quiet p@PackageIdentifier{..} Nothing = do
+  unless quiet (putStr $ display p ++ "...")
   let
     url =
       "GET https://hackage.haskell.org/package/"
@@ -169,15 +203,16 @@
 orderPackagesByLicense
   :: Bool
   -> Maybe PackageIdentifier
+  -> Maybe [(PackageName, License)]
   -> Set PackageIdentifier
   -> IO (Map LiLicense (Set PackageIdentifier), Set PackageIdentifier)
-orderPackagesByLicense quiet maybeP =
+orderPackagesByLicense quiet maybeP maybeLicenses =
   let
     cond =
       maybe (const False) (==) maybeP
 
     insertPackage package orderedPackages' = do
-      maybeLicense <- getPackageLicense quiet package
+      maybeLicense <- getPackageLicense quiet package maybeLicenses
 
       (orderedPackages, failed) <- orderedPackages'
       return $
