diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.4.1 (2022-06-23)
+- 'rename' improvements
+- 'new': avoid error on cabal >= 3.4 by not passing --license to cabal init
+
 ## 0.4 (2022-03-27)
 - template.cabal: use cabal 2.0 and define hs-source-dirs
 - 'tagdist --existing-tag' replaces 'dist' command
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -15,64 +15,56 @@
 
 After committing the latest changes for the release, create a tag and tarball:
 
-```
+```shellsession
 $ hkgr tagdist
-v0.2.5
+v0.4
 No errors or warnings could be found in the package.
 Running hlint
-./Main.hs:107:28: Warning: Redundant do
+src/Main.hs:(407,9)-(408,55): Warning: Eta reduce
 Found:
-  do void $ cmdBool "hlint" ["."]
+  replaceHolder lbl val file
+    = sed ["s/@" ++ lbl ++ "@/" ++ val ++ "/"] file
 Perhaps:
-  void $ cmdBool "hlint" ["."]
-Resolving dependencies...
-Configuring hkgr-0.2.5...
-Building source dist for hkgr-0.2.5...
-Preprocessing executable 'hkgr' for hkgr-0.2.5..
-Source tarball created: dist/hkgr-0.2.5.tar.gz
+  replaceHolder lbl val = sed ["s/@" ++ lbl ++ "@/" ++ val ++ "/"]
+
+[]
+["src/Main.hs","data/template.cabal.tmpl","README.md","CHANGELOG.md","LICENSE","hkgr.cabal"]
+[(NoExec,"CHANGELOG.md"),(NoExec,"LICENSE"),(NoExec,"README.md"),(NoExec,"data/template.cabal.tmpl"),(NoExec,"hkgr.cabal"),(NoExec,"src/Main.hs")]
+Wrote tarball sdist to /var/home/petersen/github/hkgr/.hkgr/hkgr-0.4.tar.gz
 ```
 
-After fixing up, retag a new tarball:
+After fixing up, retag a new tarball with `--force` and upload candidate,
+in one go:
 
-```
-$ hkgr tagdist -f
-Updated tag 'v0.2.5' (was 55b69db)
+```shellsession
+$ hkgr upload -f
+Updated tag 'v0.4' (was f6d72ba)
 No errors or warnings could be found in the package.
 Running hlint
-Resolving dependencies...
-Configuring hkgr-0.2.5...
-Building source dist for hkgr-0.2.5...
-Preprocessing executable 'hkgr' for hkgr-0.2.5..
-Source tarball created: dist/hkgr-0.2.5.tar.gz
+[]
+["src/Main.hs","data/template.cabal.tmpl","README.md","CHANGELOG.md","LICENSE","hkgr.cabal"]
+[(NoExec,"CHANGELOG.md"),(NoExec,"LICENSE"),(NoExec,"README.md"),(NoExec,"data/template.cabal.tmpl"),(NoExec,"hkgr.cabal"),(NoExec,"src/Main.hs")]
+Wrote tarball sdist to /var/home/petersen/github/hkgr/.hkgr/hkgr-0.4.tar.gz
+hackage.haskell.org password:
+Uploaded to https://hackage.haskell.org/package/hkgr-0.4/candidate
 ```
 
-Alternatively if you had manually tagged the release with `v0.2.5`
+Alternatively if you had manually tagged the release with `v0.4`
 you can use `hkgr tagdist --existing-tag` to create a dist tarball.
 
-The tarball can now be uploaded to Hackage as a candidate release:
-```
-$ hkgr upload
-
-Uploaded to https://hackage.haskell.org/package/hkgr-0.2.5/candidate
-```
-
-One can continue to `tagdist -f` and `upload` until
+One can continue to `tagdist -f` and/or `upload -f` until
 everything looks good and CI passed etc.
 
-Note that `tagdist -f` and `upload`, can be combined as `upload -f`.
-If one wants to check the candidate upload quickly,
-it is faster just to run `upload` followed by `upload -f` if needed.
-
 Then it is time to push the final tag and publish the release:
 
-```
+```shellsession
 $ hkgr publish
-Everything up-to-date
-Total 0 (delta 0), reused 0 (delta 0)
+git pushing... done
+Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
 To github.com:juhp/hkgr.git
- * [new tag]         v0.2.5 -> v0.2.5
-
-Published at https://hackage.haskell.org/package/hkgr-0.2.5
+ * [new tag]         v0.4 -> v0.4
+hackage.haskell.org password:
+Published at https://hackage.haskell.org/package/hkgr-0.4
 ```
 
 ## Details
@@ -97,7 +89,7 @@
 the tag and dist tarball.
 
 One should not be able to `tagdist` on an already published
-(ie released) version made with hkgr.
+(ie released) version made with hkgr, before the version is bumped.
 
 If sdist fails for some reason then hkgr tries to reset the tag.
 
diff --git a/data/template.cabal.tmpl b/data/template.cabal.tmpl
--- a/data/template.cabal.tmpl
+++ b/data/template.cabal.tmpl
@@ -16,9 +16,9 @@
 --                       ChangeLog.md
 cabal-version:       2.0
 -- tested-with:         GHC == 8.6.5
---                        | == 8.8.4
---                        | == 8.10.7
---                        | == 9.0.2
+--                       || == 8.8.4
+--                       || == 8.10.7
+--                       || == 9.0.2
 
 source-repository head
   type:                git
diff --git a/hkgr.cabal b/hkgr.cabal
--- a/hkgr.cabal
+++ b/hkgr.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.0
 name:                hkgr
-version:             0.4
+version:             0.4.1
 synopsis:            Simple Hackage release workflow for package maintainers
 description:
             Hkgr (Hackager) is a tool to help make new releases of
@@ -20,7 +20,7 @@
 data-files:          template.cabal.tmpl
 extra-doc-files:     README.md
                    , CHANGELOG.md
-tested-with:         GHC == 8.10.5, GHC == 8.8.4, GHC == 8.6.5, GHC == 8.4.4,
+tested-with:         GHC == 8.10.7, GHC == 8.8.4, GHC == 8.6.5, GHC == 8.4.4,
                      GHC == 8.2.2, GHC == 8.0.2
 
 source-repository head
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -342,7 +342,7 @@
     Nothing -> do
       let setupFile = "Setup.hs"
       origsetup <- doesFileExist setupFile
-      cabal_ "init" ["--quiet", "--no-comments", "--non-interactive", "--is-libandexe", "--cabal-version=1.18", "--license=BSD3", "--package-name=" ++ name, "--version=0.1.0", "--dependency=base<5", "--source-dir=src"]
+      cabal_ "init" ["--quiet", "--no-comments", "--non-interactive", "--is-libandexe", "--cabal-version=1.18", "--package-name=" ++ name, "--version=0.1.0", "--dependency=base<5", "--source-dir=src"]
       whenJustM (cmdMaybe $ P.proc "find" ["-name", "Main.hs"]) $ \ file -> do
         sed ["1s/^module Main where/-- SPDX-License-Identifier: BSD-3-Clause\\n\\nmodule Main (main) where/"] file
         unless (file == "src/Main.hs") $ renameFile file "src/Main.hs"
@@ -430,6 +430,10 @@
 renameCmd newname = do
   pkgid <- getPackageId
   let oldname = unPackageName (pkgName pkgid)
-  sed ["s/" ++ oldname ++ "/" ++ newname ++ "/g"] $ oldname <.> "cabal"
-  renameFile (oldname <.> "cabal") (newname <.> "cabal")
-  -- FIXME adjust README
+  sed ["s/" ++ oldname ++ "/" ++ newname ++ "/g", "s/Paths_" ++ replace "-" "_" oldname ++ "/Paths_" ++ replace "-" "_" newname ++ "/g"] $ oldname <.> "cabal"
+  git_ "mv" [oldname <.> "cabal", newname <.> "cabal"]
+  -- FIXME for all *.hs
+  sed ["s/" ++ oldname ++ "/" ++ newname ++ "/g", "s/Paths_" ++ replace "-" "_" oldname ++ "/Paths_" ++ replace "-" "_" newname ++ "/g"] "src/Main.hs"
+  sed ["s/" ++ oldname ++ "/" ++ newname ++ "/g"] "README.md"
+  sed ["s/" ++ oldname ++ "/" ++ newname ++ "/g"] "ChangeLog.md"
+  renameDirectory (".." </> oldname) (".." </> newname)
