diff --git a/gitflow-common b/gitflow-common
index f85d575..dbb09e3 100644
--- a/gitflow-common
+++ b/gitflow-common
@@ -186,10 +186,10 @@
 # loading settings that can be overridden using git config
 gitflow_load_settings() {
 	export DOT_GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
+	export HOOKS_DIR="$DOT_GIT_DIR"/hooks
 	export MASTER_BRANCH=$(git config --get gitflow.branch.master)
 	export DEVELOP_BRANCH=$(git config --get gitflow.branch.develop)
 	export ORIGIN=$(git config --get gitflow.origin || echo origin)
-	export GITFLOW_DIR_HOOKS="$DOT_GIT_DIR"/hooks
 }
 
 #
@@ -319,40 +319,43 @@
 }
 
 #
-# do_hook
-# Inputs:
-# $1 = prefix of the hook
-#	Currently the following prefixes are supported
-#	pre - Executed before the command is executed
-#	post - Executed after the command is successfully executed.
+# run_pre_hook
 #
-# The hook called should be executable.
-# The hooks should return an exit code 0 on success. Any other return code will result in aborting the git flow process.
+# Looks for a Git hook script called
+# 
+#     pre-flow-<subcmd>-<subaction>
 #
-# Naming convention of a hook:
-# <prefix>-flow-<SUB COMMAND>-<SUB ACTION>
-# Example for a hook called before the command git flow feature start test is executed:
-# 	pre-flow-feature-start
+# If such a hook script exists and is executable, it is called with the given
+# positional arguments.  If its return code non-zero, the git-flow action is
+# aborted.
 #
-do_hook() {
-	local prefix="$1"
-	local return_code=0
+run_pre_hook() {
+	local scriptfile="${HOOKS_DIR}/pre-flow-${SUBCOMMAND}-${SUBACTION}"
+	local exitcode=0
 
-	if [ -z $prefix ]; then
-		die "Hook implementation error - No prefix given"
-	fi
-	if [ $prefix != "pre" ] && [ $prefix != "post" ]; then
-		die "Hook implementation error - Bad Prefix"
-	fi
+	if [ -x $scriptfile ]; then
+		$scriptfile "$@"
+		exitcode=$?
 
-	if [ -x ${GITFLOW_DIR_HOOKS}${prefix}-flow-${SUBCOMMAND}-${SUBACTION} ]; then
-		${GITFLOW_DIR_HOOKS}${prefix}-flow-${SUBCOMMAND}-${SUBACTION}
-
-		return_code=$?
-
-		if [ $return_code -gt 0 ]; then
-			die "Hook command ${prefix}-flow-${SUBCOMMAND}-${SUBACTION} failed. Exit code $return_code"
+		if [ $exitcode -gt 0 ]; then
+			die "fatal: Hook command $scriptfile ended with exit code $exitcode."
 		fi
 	fi
+}
 
-}
\ No newline at end of file
+#
+# run_post_hook
+#
+# Looks for a Git hook script called
+# 
+#     post-flow-<subcmd>-<subaction>
+#
+# If such a hook script exists and is executable, it is called with the given
+# positional arguments.  Its return code is ignored.
+#
+run_post_hook() {
+	local scriptfile="${HOOKS_DIR}/post-flow-${SUBCOMMAND}-${SUBACTION}"
+	if [ -x $scriptfile ]; then
+		$scriptfile "$@"
+	fi
+}
