diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
 # git-brunch [![Travis](https://travis-ci.org/andys8/git-brunch.svg?branch=master)](https://travis-ci.org/andys8/git-brunch) ![Actions](https://github.com/andys8/git-brunch/workflows/CI/badge.svg)
 
-A git branch checkout command-line tool
+A git command-line tool to work with branches
 
 ![screenshot](https://raw.githubusercontent.com/andys8/git-brunch/master/screenshot.png)
 
 ## Features
 
-- Checkout local or remote branch
-- Rebase onto a branch
+- Quickly checkout local or remote branch
+- Merge or rebase a branch
 - Search for a branch
 - Delete a branch
 - Fetch / Update
@@ -18,54 +18,65 @@
 
 ### Git alias (optional)
 
+An alias like `git b` (or `gb`) is a good idea to quickly access the tool.
+
 ```sh
 git config --global alias.b brunch
 ```
 
 ## Installation
 
+The installation is possible in multiple ways, and there are binaries available to download.
+
 ### Download binary
 
-1. Download from [releases](https://github.com/andys8/git-brunch/releases)
-1. Rename to `git-brunch`
-1. `chmod +x git-brunch`
-1. Add to `PATH`
+1. Download from **[releases](https://github.com/andys8/git-brunch/releases)**
+1. Rename the file to `git-brunch`
+1. Make it executable with `chmod +x git-brunch`
+1. Add to your `PATH`
 
 ### Arch Linux
 
-`git-brunch` is in the [AUR](https://aur.archlinux.org/packages/git-brunch).
-Install it with e.g. `yay -S git-brunch` or `pamac install git-brunch`.
+`git-brunch` is in the [AUR](https://aur.archlinux.org/packages/git-brunch)
 
-### [Stack](https://haskellstack.org)
+```sh
+yay -S git-brunch
+pamac install git-brunch
+```
 
-#### Install
+### FreeBSD
 
+`git-brunch` can be installed from the official FreeBSD package repository
+
 ```sh
-stack install git-brunch # --resolver=lts-16.11
+pkg install hs-git-brunch
 ```
 
-#### Clone and install from source
+### [Nix](https://nixos.org/nix)
 
+`git-brunch` is part of the nix package manager
+
 ```sh
-git clone https://github.com/andys8/git-brunch.git
-cd git-brunch
-stack install
+nix-env -i git-brunch
 ```
 
-### [Nix](https://nixos.org/nix)
+### [Stack](https://haskellstack.org)
 
-#### Install with nix-env
+`git-brunch` can installed with the Haskell build tool stack
 
 ```sh
-nix-env -f "<nixpkgs>" -iA haskellPackages.git-brunch
+stack install git-brunch # --resolver=lts-17.4
 ```
 
-#### Clone and install with `nix`
+### Install from source
 
+`git-brunch` can be installed from source. It can be forked and modified, if you like to.
+
 ```sh
-git clone https://github.com/andys8/git-brunch.git
+git clone https://github.com/andys8/git-brunch
 cd git-brunch
-nix-env -if .
+stack install
+# or nix-env -if .
 ```
 
 ## Development
diff --git a/app/Git.hs b/app/Git.hs
--- a/app/Git.hs
+++ b/app/Git.hs
@@ -8,9 +8,9 @@
   , isRemoteBranch
   , listBranches
   , rebaseInteractive
+  , merge
   , toBranches
-  )
-where
+  ) where
 
 import           Data.Char                      ( isSpace )
 import           Data.List
@@ -63,6 +63,11 @@
 rebaseInteractive branch = do
   putStrLn $ "Rebase onto " <> fullBranchName branch
   spawnGit ["rebase", "--interactive", "--autostash", fullBranchName branch]
+
+merge :: Branch -> IO ExitCode
+merge branch = do
+  putStrLn $ "Merge branch " <> fullBranchName branch
+  spawnGit ["merge", fullBranchName branch]
 
 deleteBranch :: Branch -> IO ExitCode
 deleteBranch (BranchCurrent _ ) = error "Cannot delete current branch"
diff --git a/app/GitBrunch.hs b/app/GitBrunch.hs
--- a/app/GitBrunch.hs
+++ b/app/GitBrunch.hs
@@ -1,16 +1,22 @@
 {-# LANGUAGE LambdaCase #-}
 module GitBrunch
   ( main
-  )
-where
+  ) where
 
-import           Brick.Main                     ( halt
-                                                , continue
+import           Brick.Main                     ( continue
+                                                , halt
                                                 , suspendAndResume
                                                 )
+import qualified Brick.Main                    as M
 import           Brick.Themes                   ( themeToAttrMap )
 import           Brick.Types
+import qualified Brick.Widgets.Border          as B
+import qualified Brick.Widgets.Border.Style    as BS
+import qualified Brick.Widgets.Center          as C
 import           Brick.Widgets.Core
+import qualified Brick.Widgets.Dialog          as D
+import qualified Brick.Widgets.Edit            as E
+import qualified Brick.Widgets.List            as L
 import           Control.Exception              ( SomeException
                                                 , catch
                                                 )
@@ -18,51 +24,45 @@
 import           Data.Char
 import           Data.List
 import           Data.Maybe                     ( fromMaybe )
+import qualified Data.Vector                   as Vec
 import           Graphics.Vty            hiding ( update )
-import           Lens.Micro                     ( (^.)
-                                                , (.~)
-                                                , (%~)
+import           Lens.Micro                     ( (%~)
                                                 , (&)
+                                                , (.~)
                                                 , Lens'
+                                                , (^.)
                                                 , lens
                                                 )
 import           System.Exit
-import qualified Brick.Main                    as M
-import qualified Brick.Widgets.Border          as B
-import qualified Brick.Widgets.Border.Style    as BS
-import qualified Brick.Widgets.Center          as C
-import qualified Brick.Widgets.Dialog          as D
-import qualified Brick.Widgets.Edit            as E
-import qualified Brick.Widgets.List            as L
-import qualified Data.Vector                   as Vec
 
 import           Git                            ( Branch(..) )
-import           Theme
 import qualified Git
+import           Theme
 
 
 data Name         = Local | Remote | Filter deriving (Ord, Eq, Show)
 data RemoteName   = RLocal | RRemote deriving (Eq)
-data GitCommand   = GitRebase | GitCheckout | GitDeleteBranch deriving (Ord, Eq)
+data GitCommand   = GitRebase | GitMerge | GitCheckout | GitDeleteBranch deriving (Ord, Eq)
 data DialogResult = SetDialog Dialog | EndDialog DialogOption
 data DialogOption = Cancel | Confirm
 type Dialog = D.Dialog DialogOption
 
 data State = State
-  { _focus :: RemoteName
-  , _gitCommand :: GitCommand
-  , _branches :: [Branch]
-  , _localBranches :: L.List Name Branch
-  , _remoteBranches :: L.List Name Branch
-  , _dialog :: Maybe Dialog
-  , _filter :: E.Editor String Name
+  { _focus           :: RemoteName
+  , _gitCommand      :: GitCommand
+  , _branches        :: [Branch]
+  , _localBranches   :: L.List Name Branch
+  , _remoteBranches  :: L.List Name Branch
+  , _dialog          :: Maybe Dialog
+  , _filter          :: E.Editor String Name
   , _isEditingFilter :: Bool
   }
 
 
-instance (Show GitCommand) where
+instance Show GitCommand where
   show GitCheckout     = "checkout"
   show GitRebase       = "rebase"
+  show GitMerge        = "merge"
   show GitDeleteBranch = "delete"
 
 
@@ -81,6 +81,7 @@
   gitFunction = \case
     GitCheckout     -> Git.checkout
     GitRebase       -> Git.rebaseInteractive
+    GitMerge        -> Git.merge
     GitDeleteBranch -> Git.deleteBranch
 
 emptyState :: State
@@ -126,11 +127,11 @@
     , C.hCenter $ toBranchList RRemote remoteBranchesL
     ]
   instructions = maxWidth 100 $ hBox
-    [ drawInstruction "HJKL"  "move"
-    , drawInstruction "Enter" "checkout"
+    [ drawInstruction "Enter" "checkout"
     , drawInstruction "/"     "filter"
     , drawInstruction "F"     "fetch"
     , drawInstruction "R"     "rebase"
+    , drawInstruction "M"     "merge"
     , drawInstruction "D"     "delete"
     ]
 
@@ -225,6 +226,7 @@
     confirmDelete Nothing                  = continue state
     endWithCheckout = halt $ state { _gitCommand = GitCheckout }
     endWithRebase   = halt $ state { _gitCommand = GitRebase }
+    endWithMerge    = halt $ state { _gitCommand = GitMerge }
     focusLocal      = focusBranches RLocal state
     focusRemote     = focusBranches RRemote state
     doFetch         = suspendAndResume (fetchBranches state)
@@ -245,7 +247,9 @@
       EvKey (KChar 'f') [MCtrl] -> startEditingFilter
       EvKey (KChar 'd') []      -> confirmDelete (selectedBranch state)
       EvKey KEnter      []      -> endWithCheckout
+      EvKey (KChar 'c') []      -> endWithCheckout
       EvKey (KChar 'r') []      -> endWithRebase
+      EvKey (KChar 'm') []      -> endWithMerge
       EvKey KLeft       []      -> focusLocal
       EvKey (KChar 'h') []      -> focusLocal
       EvKey KRight      []      -> focusRemote
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,8 +1,8 @@
 module Main where
 
+import           Data.Version                   ( showVersion )
 import           Options.Applicative
 import           Paths_git_brunch               ( version )
-import           Data.Version                   ( showVersion )
 
 import qualified GitBrunch
 
@@ -15,7 +15,7 @@
  where
   opts = info
     (versionParser <|> pure RunGitBrunch <**> helper)
-    (header "git-brunch - A git checkout and rebase command-line tool")
+    (header "git-brunch - A git command-line tool to work with branches")
 
 
 run :: Mode -> IO ()
diff --git a/app/Theme.hs b/app/Theme.hs
--- a/app/Theme.hs
+++ b/app/Theme.hs
@@ -5,11 +5,11 @@
                                                 )
 import           Brick.Themes
 import           Brick.Util
-import           Graphics.Vty
-import qualified Brick.Widgets.Dialog          as Dialog
-import qualified Brick.Widgets.List            as List
 import           Brick.Widgets.Border          as Border
+import qualified Brick.Widgets.Dialog          as Dialog
 import qualified Brick.Widgets.Edit            as Edit
+import qualified Brick.Widgets.List            as List
+import           Graphics.Vty
 
 theme :: Theme
 theme = newTheme
diff --git a/git-brunch.cabal b/git-brunch.cabal
--- a/git-brunch.cabal
+++ b/git-brunch.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 643cd917a331afd2c5c769ae081cd6f382eec74c30471e6b5b3ac9315c3df792
 
 name:           git-brunch
-version:        1.4.4.0
+version:        1.5.0.0
 synopsis:       git checkout command-line tool
 description:    Please see the README on GitHub at <https://github.com/andys8/git-brunch>
 category:       Git
@@ -15,7 +13,7 @@
 bug-reports:    https://github.com/andys8/git-brunch/issues
 author:         andys8
 maintainer:     andys8@users.noreply.github.com
-copyright:      2020 andys8
+copyright:      2021 andys8
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
@@ -39,7 +37,9 @@
       Paths_git_brunch
   hs-source-dirs:
       app
-  default-extensions: StrictData OverloadedStrings
+  default-extensions:
+      StrictData
+      OverloadedStrings
   build-depends:
       base >=4.7 && <5
     , brick
@@ -65,7 +65,9 @@
   hs-source-dirs:
       test
       app
-  default-extensions: StrictData OverloadedStrings
+  default-extensions:
+      StrictData
+      OverloadedStrings
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       base >=4.7 && <5
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,5 +1,5 @@
-import           Test.Hspec
 import           Git
+import           Test.Hspec
 
 main :: IO ()
 main = hspec $ describe "Git.toBranch" $ do
