diff --git a/.mailmap b/.mailmap
index 1e66b4db2c319380410828aa4a5e91530e4775c3..5c4d110333efc155fbbe94b905a3f3baa3de0c92 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1,2 +1,3 @@
-Richard Hartmann <richih.mailinglist@gmail.com> <richih+github.com@richih.org>
+Richard Hartmann <richih@debian.org> <richih+github.com@richih.org>
+Richard Hartmann <richih@debian.org> <richih.mailinglist@gmail.com>
 Alexander Skurikhin <a.skurihin@gmail.com> <a.skurihin@gmail.com>
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index abea9e09c8fa72f4120dd75aa764ac3fcecdb478..6fc85f0a3c21a3fd9ec229817c9321e3b0857907 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -5,7 +5,7 @@ Thomas Ferris Nicolaisen <tfnico@gmail.com>
 martin f. krafft <madduck@madduck.net>
 Alessandro Ghedini <alessandro@ghedini.me>
 Valentin Haenel <valentin.haenel@gmx.de>
-Richard Hartmann <richih.mailinglist@gmail.com>
+Richard Hartmann <richih@debian.org>
 mek-apelsin <mek@pels.in>
 Dieter Plaetinck <dieter@plaetinck.be>
 Corey Quinn <corey@sequestered.net>
diff --git a/README.md b/README.md
index a83325d979ee4482a828111802d7882a4dbe141c..e0f78375672f506cf12114218822269b367cb66a 100644
--- a/README.md
+++ b/README.md
@@ -3,20 +3,42 @@ vcsh - Version Control System for $HOME - multiple Git repositories in $HOME
 
 # Index
 
-1. [Introduction](#introduction)
-2. [30 second howto](#30-second-howto)
-3. [Overview](#overview)
-4. [Getting Started](#getting-started)
-5. [Usage Exmaples](#usage-examples)
+1. [30 second howto](#30-second-howto)
+2. [Introduction](#introduction)
+3. [Usage Exmaples](#usage-examples)
+4. [Overview](#overview)
+5. [Getting Started](#getting-started)
 6. [Contact](#contact)
 
 
+# 30 second howto
+
+While it may appear that there's an overwhelming amount of documentation and
+while the explanation of the concepts behind `vcsh` needs to touch a few gory
+details of `git` internals, getting started with `vcsh` is extremely simple.
+
+Let's say you want to version control your `vim` configuration:
+
+    vcsh init vim
+    vcsh vim add ~/.vimrc ~/.vim
+    vcsh vim commit -m 'Initial commit of my Vim configuration'
+    # optionally push your files to a remote
+    vcsh vim remote add origin <remote>
+    vcsh vim push -u origin master
+    # from now on you can push additional commits like this
+    vcsh vim push
+
+If all that looks a _lot_ like standard `git`, that's no coincidence; it's
+a design feature.
+
+
 # Introduction
 
-[vcsh][vcsh] allows you to maintain several git repositories in one single
+[vcsh][vcsh] allows you to maintain several Git repositories in one single
 directory. They all maintain their working trees without clobbering each other
-or interfering otherwise. By default, all git repositories maintained via
-`vcsh` are stored in `$HOME` but you can override this setting if you want to.
+or interfering otherwise. By default, all Git repositories maintained via
+`vcsh` store the actual files in `$HOME` but you can override this setting if
+you want to.
 All this means that you can have one repository per application or application
 family, i.e. `zsh`, `vim`, `ssh`, etc. This, in turn, allows you to clone
 custom sets of configurations onto different machines or even for different
@@ -25,13 +47,7 @@ For example, you may not need to have your `mplayer` configuration on a server
 or available to root and you may want to maintain different configuration for
 `ssh` on your personal and your work machines.
 
-`vcsh` was designed with [mr][mr], a tool to manage Multiple Repositories, in
-mind and the two integrate very nicely. `mr` has native support for `vcsh`
-repositories and to `vcsh`, `mr` is just another configuration to track.
-This make setting up any new machine a breeze. It takes literally less than
-five minutes to go from standard installation to fully set up system
-
-A lot of modern UNIX-based systems offer pacakges for `vcsh`. In case yours
+A lot of modern UNIX-based systems offer packages for `vcsh`. In case yours
 does not read `INSTALL.md` for install instructions or `PACKAGING.md` to create
 a package, yourself. If you do end up packaging `vcsh` please let us know so we
 can give you your own packaging branch in the upstream repository.
@@ -39,30 +55,59 @@ can give you your own packaging branch in the upstream repository.
 ## Talks
 
 Some people found it useful to look at slides and videos explaining how `vcsh`
-works instead of working through the docs, first.
-They can all be found [on the author's talk page][talks].
+works instead of working through the docs.
+All slides, videos, and further information can be found
+[on the author's talk page][talks].
 
 
-# 30 second howto
+# Usage Examples
 
-While it may appear that there's an overwhelming amount of documentation and
-while the explanation of the concepts behind `vcsh` needs to touch a few gory
-details of `git` internals, getting started with `vcsh` is extremely simple.
+There are three different ways to interact with `vcsh` repositories; this
+section will only show the simplest and easiest way.
+Certain more advanced use cases require the other two ways, but don't worry
+about this for now. If you never even bother playing with the other two
+modes you will still be fine.
+`vcsh enter` and `vcsh run`  will be covered in later sections.
 
-Let's say you want to version control your `vim` configuration:
+
+## Initialize a new repository called "vim"
 
     vcsh init vim
+
+## Clone an existing repository
+
+    vcsh clone <remote> <repository_name>
+
+## Add files to repository "vim"
+
     vcsh vim add ~/.vimrc ~/.vim
-    vcsh vim commit -m 'Initial commit of my Vim configuration'
-    # optionally push your files to a remote
+    vcsh vim commit -m 'Update Vim configuration'
+
+## Add a remote for repository "vim"
+
     vcsh vim remote add origin <remote>
-    vcsh vim push -u origin master
-    # from now on you can push additional commits like this
+    vcsh vim push origin master:master
+    vcsh vim branch --track master origin/master
+
+## Push to remote of repository "vim"
+
     vcsh vim push
 
-If all that looks a _lot_ like standard `git`, that's no coincidence; it's
-a design feature.
+## Pull from remote of repository "vim"
+
+    vcsh vim pull
 
+## Show status of changed files in all repositories
+
+    vcsh status
+
+## Pull from all repositories
+
+    vcsh pull
+
+## Push to all repositories
+
+    vcsh push
 
 # Overview
 
@@ -93,9 +138,12 @@ To manage both `vcsh` and other repositories, we suggest using [mr](mr). `mr`
 takes care of pulling in and pushing out new data for a variety of version
 control systems.
 
+`vcsh` was designed with [mr][mr], a tool to manage Multiple Repositories, in
+mind and the two integrate very nicely. `mr` has native support for `vcsh`
+repositories and to `vcsh`, `mr` is just another configuration to track.
+This make setting up any new machine a breeze. It takes literally less than
+five minutes to go from standard installation to fully set up system
 
-The last logical step is to maintain all those new repositores with an automated
-tool instead of tracking them by hand.
 This is where `mr` comes in. While the use of `mr` is technically
 optional, but it will be an integral part of the proposed system that follows.
 
@@ -168,9 +216,6 @@ you to conveniently run `mr up` etc. to manage all repositories. It looks like
 this:
 
     [DEFAULT]
-    jobs = 5
-    # Use if your mr does not have vcsh support in mainline, yet
-    include = cat /usr/share/mr/vcsh
     include = cat ${XDG_CONFIG_HOME:-$HOME/.config}/mr/config.d/*
 
 ### repo.d
@@ -196,10 +241,8 @@ configuration to a new host.
    example: `vcsh clone git://github.com/RichiH/vcsh_mr_template.git mr`
 2. Choose your repositories by linking them in config.d (or go with the default
    you may have already configured by adding symlinks to git).
-3. Make sure the line 'include = cat /usr/share/mr/vcsh' in .mrconfig points
-   to an existing file
-4. Run mr to clone the repositories: `cd; mr update`.
-5. Done.
+3. Run mr to clone the repositories: `cd; mr update`.
+4. Done.
 
 Hopefully the above could help explain how this approach saves time by
 
@@ -260,18 +303,12 @@ and further documentation about the use of AUR is available
 
 #### From source
 
-If your version of mr is older than version 1.07, make sure to put
-
-    include = cat /usr/share/mr/vcsh
-
-into your .mrconfig .
-
     # choose a location for your checkout
-    cd $HOME
     mkdir -p ~/work/git
+    cd ~/work/git
     git clone git://github.com/RichiH/vcsh.git
     cd vcsh
-    ln -s vcsh /usr/local/bin                       # or add it to your PATH
+    sudo ln -s vcsh /usr/local/bin                       # or add it to your PATH
     cd
 
 #### Clone the Template
@@ -358,40 +395,6 @@ mr is used to actually retrieve configs, etc
     ~ % mr -j 5 up
 
 
-# Usage Examples
-
-All examples in this section will use the short form of `vcsh` which is the
-simplest way to interface with it. If you don't know what that means simply
-ignore this fact for now and follow the examples.
-
-## Initialize a new repository "vim"
-
-    vcsh init vim
-
-## Clone an existing repository
-
-    vcsh clone <remote> <repository_name>
-
-## Add files to repository "vim"
-
-    vcsh vim add ~/.vimrc ~/.vim
-    vcsh vim commit -m 'Update Vim configuration'
-
-## Add a remote for repository "vim"
-
-    vcsh vim remote add origin <remote>
-    vcsh vim push origin master:master
-    vcsh vim branch --track master origin/master
-
-## Push to remote of repository "vim"
-
-    vcsh vim push
-
-## Pull from remote of repository "vim"
-
-    vcsh vim pull
-
-
 # mr usage ; will be factored out & rewritten
 
 ### Keeping repositories Up-to-Date
diff --git a/changelog b/changelog
index 1f1d1e647aacb3f846147e0326fea449a729f682..564ccbb22ec659db975b34f76a103bbc9e952592 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,12 @@
+2013-08-29  Richard Hartmann <richih.mailinglist@gmail.com>
+
+	* Release 1.20130829
+	* Add support for `vcsh commit`
+	* Add support for `vcsh status <repo>`
+	* Add pre-/post-init hooks
+	* Documentation improvements
+	* Minor cleanups
+
 2013-07-24  Richard Hartmann <richih.mailinglist@gmail.com>
 
 	* Release 1.20130724
diff --git a/doc/hooks b/doc/hooks
index 3c72ef88e336f6eb8f109a6871aa7f2068eee469..54ff795611c0081e11eca8d16064f0f57f2ac60e 100644
--- a/doc/hooks
+++ b/doc/hooks
@@ -12,6 +12,8 @@ Available hooks are:
 * post-command
 * pre-enter
 * post-enter
+* pre-init
+* post-init
 * pre-pull
 * post-pull
 * pre-push
diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 9532e654278c1187eb0112b8d50769ed19156eea..89ebff5a161a60eb8a1b2857259392a7addf1133 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -29,7 +29,7 @@ vcsh(1) - Version Control System for $HOME - multiple Git repositories in $HOME
 
 `vcsh` run <repo> <shell command>
 
-`vcsh` status
+`vcsh` status [<repo>]
 
 `vcsh` upgrade <repo>
 
@@ -86,6 +86,9 @@ an interactive user.
   If you need to clone a bundle of repositories, look into the
   `post-clone-retired` hook.
 
+* commit:
+  Commit in all repositories
+
 * delete:
   Delete an existing repository.
 
@@ -128,7 +131,7 @@ an interactive user.
   an interactive user.
 
 * status:
-  Show statuses of all vcsh repositories.
+  Show statuses of all/one vcsh repositories.
 
 * upgrade:
   Upgrade repository to currently recommended settings.
@@ -226,9 +229,12 @@ the repository's name, followed by a dot, i.e. <zsh.pre-run>. Otherwise, the
 same rules as above apply. The dot between the repository's name and the hook
 is mandatory, though.
 
-Available hooks are <pre-enter>, <post-enter>, <pre-run>, <post-run>,
-<pre-upgrade>, and <post-upgrade>. If you need more, vcsh is trivial to patch,
-but please let upstream know so we can ship them by default.
+Available hooks are <pre-clone>, <post-clone>, <post-clone-retired>,
+<pre-command>, <post-command>, <pre-enter>, <post-enter>, <pre-init>,
+<post-init>, <pre-pull>, <post-pull>, <pre-push>, <post-push>, <pre-run>,
+<post-run>, <pre-upgrade>, and <post-upgrade>.
+If you need more, vcsh is trivial to patch, but please let upstream know so
+we can ship them by default.
 
 ## DETAILED HOWTO AND FURTHER READING
 
@@ -279,7 +285,7 @@ This manpage and `vcsh` itself were written by Richard "RichiH" Hartmann.
 
 ## COPYRIGHT
 
-Copyright 2011-2013 Richard Hartmann <richih.mailinglist@gmail.com>
+Copyright 2011-2013 Richard Hartmann <richih@debian.org>
 
 Licensed under the GNU GPL version 2 or higher.
 
diff --git a/vcsh b/vcsh
index f2bbd7a229c8211b9d79cb3bb0ee262f54a28eec..2ec49557b39b6d00d39d37eb70762d7fe5956538 100755
--- a/vcsh
+++ b/vcsh
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 # This program is licensed under the GNU GPL version 2 or later.
-# (c) Richard "RichiH" Hartmann <richih.mailinglist@gmail.com>, 2011-2013
+# (c) Richard "RichiH" Hartmann <richih@debian.org>, 2011-2013
 # For details, see LICENSE. To submit patches, you have to agree to
 # license your code under the GNU GPL version 2 or later.
 
@@ -24,7 +24,7 @@ basename() {
 }
 
 SELF=$(basename $0)
-VERSION='1.20130724'
+VERSION='1.20130829'
 
 fatal() {
 	echo "$SELF: fatal: $1" >&2
@@ -38,9 +38,11 @@ while getopts "c:dv" flag; do
 	if [ "$1" = '-d' ] || [ "$1" = '--debug' ]; then
 		set -vx
 		VCSH_DEBUG=1
+		echo "debug mode on"
 		echo "$SELF $VERSION"
 	elif [ "$1" = '-v' ];then
 		VCSH_VERBOSE=1
+		echo "verbose mode on"
 		echo "$SELF $VERSION"
 	elif [ "$1" = '-c' ];then
 		VCSH_OPTION_CONFIG=$OPTARG
@@ -92,6 +94,7 @@ help() {
    commands:
    clone <remote> \\
          [<repo>]       Clone from an existing repository
+   commit               Commit in all repositories
    delete <repo>        Delete an existing repository
    enter <repo>         Enter repository; spawn new instance of \$SHELL
    help                 Display this help text
@@ -106,7 +109,7 @@ help() {
           <newname>     Rename repository
    run <repo> \\
        <command>        Use this repository
-   status               Show statuses of all vcsh repositories
+   status [<repo>]      Show statuses of all/one vcsh repositories
    upgrade <repo>       Upgrade repository to currently recommended settings
    version              Print version information
    which <substring>    Find substring in name of any tracked file
@@ -158,6 +161,18 @@ clone() {
 	hook post-clone-retired
 }
 
+commit() {
+	hook pre-commit
+	for VCSH_REPO_NAME in $(list); do
+		echo "$VCSH_REPO_NAME: "
+		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
+		use
+		git commit --untracked-files=no --quiet
+		echo
+	done
+	hook post-commit
+}
+
 delete() {
 	cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11
 	use
@@ -197,12 +212,14 @@ hook() {
 }
 
 init() {
+	hook pre-init
 	[ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10
 	export GIT_WORK_TREE="$VCSH_BASE"
 	mkdir -p "$GIT_WORK_TREE" || fatal "could not create '$GIT_WORK_TREE'" 50
 	cd "$GIT_WORK_TREE" || fatal "could not enter '$GIT_WORK_TREE'" 11
 	git init
 	upgrade
+	hook post-init
 }
 
 list() {
@@ -277,13 +294,19 @@ run() {
 }
 
 status() {
-	for VCSH_REPO_NAME in $(list); do
-		echo "$VCSH_REPO_NAME:"
+	if [ ! "x$VCSH_REPO_NAME" = "x" ]; then
 		export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 		use
 		git status --short --untracked-files='no'
-		echo
-	done
+	else
+		for VCSH_REPO_NAME in $(list); do
+			echo "$VCSH_REPO_NAME:"
+			export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
+			use
+			git status --short --untracked-files='no'
+			echo
+		done
+	fi
 }
 
 upgrade() {
@@ -383,12 +406,15 @@ elif [ "$1" = 'delete' ]           ||
 	[ "$VCSH_COMMAND" = 'rename' ] && { export VCSH_REPO_NAME_NEW="$3";
 	                                    export GIT_DIR_NEW="$VCSH_REPO_D/$VCSH_REPO_NAME_NEW.git"; }
 	[ "$VCSH_COMMAND" = 'run' ]    && shift 2
-elif [ "$1" = 'list' ] ||
+elif [ "$1" = 'commit' ] ||
+     [ "$1" = 'list' ] ||
      [ "$1" = 'list-tracked' ] ||
      [ "$1" = 'pull' ] ||
-     [ "$1" = 'push' ] ||
-     [ "$1" = 'status' ]; then
+     [ "$1" = 'push' ]; then
+	export VCSH_COMMAND="$1"
+elif [ "$1" = 'status' ]; then
 	export VCSH_COMMAND="$1"
+	export VCSH_REPO_NAME="$2"
 elif [ -n "$2" ]; then
 	export VCSH_COMMAND='run'
 	export VCSH_REPO_NAME="$1"
@@ -419,7 +445,7 @@ check_dir() {
 		if [ -e "$check_directory" ]; then
 			fatal "'$check_directory' exists but is not a directory" 13
 		else
-			info "attempting to create '$check_directory'"
+			verbose "attempting to create '$check_directory'"
 			mkdir -p "$check_directory" || fatal "could not create '$check_directory'" 50
 		fi
 	fi