diff --git a/git-flow-init b/git-flow-init
index 31be29f..20f41fa 100644
--- a/git-flow-init
+++ b/git-flow-init
@@ -16,36 +16,79 @@
 	echo "usage: git flow init"
 }
 
+parse_args() {
+	# parse options
+	FLAGS "$@" || exit $?
+	eval set -- "${FLAGS_ARGV}"
+}
+
 # Default entry when no SUBACTION is given
 cmd_default() {
+	DEFINE_boolean force false 'force setting of gitflow branches, even if already configured' f
+	parse_args "$@"
+
 	if ! git rev-parse --git-dir >/dev/null 2>&1; then
 		git init
 	else
-		echo "Will try to incorporate git-flow into your current repo."
+		# TODO: This still fails when running:
+		# git init
+		# git flow init
+
+		# assure that we are not working in a repo with local changes
+		gitflow_require_clean_working_tree
+	fi
+
+	# running git flow init on an already initialized repo is fine
+	if gitflow_is_initialized && ! flag force; then
+		warn "Already initialized for gitflow."
+		warn "To force reinitialization, use: git flow init -f"
+		exit 0
 	fi
 
 	local branch_count
 
 	# add a master branch if no such branch exists yet
-	# TODO: Distinguish two cases:
-	#       1. NO BRANCHES EXIST AT ALL! (fresh repo):
-	#          allow a name for the branch-to-be-created
-	#       2. THERE EXIST SOME BRANCHES
-	#          master must be based on (or *be*) one of those!
 	local master_branch
-	master_branch=$(git config --get gitflow.branch.master)
-	if [ "$master_branch" = "" ]; then
-		# first, ask how to create the master branch
-		echo
-		echo "Which branch should be used for bringing forth production releases?"
-		branch_count=$(gitflow_all_branches | wc -l)
-		if [ "$branch_count" -gt 0 ]; then
-			gitflow_all_branches | sed 's/^.*$/   - &/g'
-			echo "You may use an existing branch name, or specify a new one."
+	if gitflow_has_master_configured && ! flag force; then
+		master_branch=$(git config --get gitflow.branch.master)
+	else
+		# Two cases are distinguished:
+		# 1. A fresh git repo (without any branches)
+		#    We will create a new master/develop branch for the user
+		# 2. Some branches do already exist
+		#    We will disallow creation of new master/develop branches and
+		#    rather allow to use existing branches for git-flow.
+		local default_suggestion
+		local should_check_existence
+		branch_count=$(gitflow_local_branches | wc -l)
+		if [ "$branch_count" -eq 0 ]; then
+			echo "No branches exist yet. Base branches must be created now."
+			should_check_existence=NO
+			default_suggestion=master
+		else
+			echo
+			echo "Which branch should be used for bringing forth production releases?"
+			gitflow_local_branches | sed 's/^.*$/   - &/g'
+
+			should_check_existence=YES
+			default_suggestion=
+			for guess in 'production' 'main' 'master'; do
+				if gitflow_local_branch_exists "$guess"; then
+					default_suggestion="$guess"
+					break
+				fi
+			done
 		fi
-		echo "Branch name for production releases: [master] \c"
-		read master_branch
-		master_branch=${master_branch:-master}
+
+		echo "Branch name for production releases: [$default_suggestion] \c"
+		read answer
+		master_branch=${answer:-$default_suggestion}
+
+		# check existence in case of an already existing repo
+		if [ "$should_check_existence" = "YES" ]; then
+			gitflow_local_branch_exists "$master_branch" || \
+				die "Local branch '$master_branch' does not exist."
+		fi
 
 		# store the name of the master branch
 		git config gitflow.branch.master "$master_branch"
@@ -53,50 +96,77 @@
 
 	# add a develop branch if no such branch exists yet
 	local develop_branch
-	develop_branch=$(git config --get gitflow.branch.develop)
-	if [ "$develop_branch" = "" ]; then
-		# next, ask how to create the develop branch
-		echo
-		echo "Which branch should be used for developing the \"next release\"?"
-		branch_count=$(gitflow_all_branches | grep -v "^${master_branch}\$" | wc -l)
-		if [ "$branch_count" -gt 0 ]; then
-			gitflow_all_branches | grep -v "^${master_branch}\$" | sed 's/^.*$/   - &/g'
-			echo "You may use an existing branch name, or specify a new one."
+	if gitflow_has_develop_configured && ! flag force; then
+		develop_branch=$(git config --get gitflow.branch.develop)
+	else
+		# Again, the same two cases as with the master selection are
+		# considered (fresh repo or repo that contains branches)
+		local default_suggestion
+		local should_check_existence
+		branch_count=$(gitflow_local_branches | grep -v "^${master_branch}\$" | wc -l)
+		if [ "$branch_count" -eq 0 ]; then
+			should_check_existence=NO
+			default_suggestion=develop
+		else
+			echo
+			echo "Which branch should be used for integration of the \"next release\"?"
+			gitflow_local_branches | grep -v "^${master_branch}\$" | sed 's/^.*$/   - &/g'
+
+			should_check_existence=YES
+			default_suggestion=
+			for guess in 'develop' 'int' 'integration' 'master'; do
+				if gitflow_local_branch_exists "$guess"; then
+					default_suggestion="$guess"
+					break
+				fi
+			done
 		fi
-		echo "Branch name for \"next release\" development: [develop] \c"
-		read develop_branch
-		develop_branch=${develop_branch:-develop}
+
+		echo "Branch name for \"next release\" development: [$default_suggestion] \c"
+		read answer
+		develop_branch=${answer:-$default_suggestion}
+
+		if [ "$master_branch" = "$develop_branch" ]; then
+			die "Production and integration branches should differ."
+		fi
+
+		# check existence in case of an already existing repo
+		if [ "$should_check_existence" = "YES" ]; then
+			gitflow_local_branch_exists "$develop_branch" || \
+				die "Local branch '$develop_branch' does not exist."
+		fi
 
 		# store the name of the develop branch
 		git config gitflow.branch.develop "$develop_branch"
 	fi
 
-	# create a HEAD now, if it does not exist yet (in a just init'ed repo)
+	# Creation of HEAD
+	# ----------------
+	# We create a HEAD now, if it does not exist yet (in a fresh repo). We need
+	# it to be able to create new branches.
 	if ! git rev-parse --quiet --verify HEAD >/dev/null 2>&1; then
 		git symbolic-ref HEAD "refs/heads/$master_branch"
 		git commit --allow-empty --quiet -m "Initial commit"
 	fi
 
-	# if the selected master branch exists, it's okay, else create it (base on
-	# the currently checked out branch)
-	if ! gitflow_branch_exists "$master_branch"; then
-		git branch "$master_branch"
+	# Creation of master
+	# ------------------
+	# At this point, there always is a master branch: either it existed already
+	# (and was picked interactively as the production branch) or it has just
+	# been created in a fresh repo
+
+	# Creation of develop
+	# -------------------
+	# The develop branch possibly does not exist yet.  This is the case when,
+	# in a git init'ed repo with one or more commits, master was picked as the
+	# default production branch and develop was "created".  We should create
+	# the develop branch now in that case (we base it on master, of course)
+	if ! gitflow_local_branch_exists "$develop_branch"; then
+		git branch "$develop_branch" "$master_branch"
 	fi
 
-	if ! gitflow_branch_exists "$develop_branch"; then
-		git branch "$develop_branch" "$master_branch"	 # base it on the master branch!
-	else
-		# TODO: this test should be moved up, in the selection of the develop
-		# branch! Branches that do not have a merge base with master shouldn't
-		# be allowed to pick in the first place!
-		gitflow_test_branches_equal "$develop_branch" "$master_branch"
-		if [ $? -eq 4 ]; then
-			warn "fatal: $develop_branch and $master_branch have no common ancestors."
-			die "fatal: $develop_branch cannot be used for development."
-		fi
-	fi
-
-	gitflow_require_clean_working_tree
+	# assert the gitflow repo has been correctly initialized
+	gitflow_is_initialized
 
 	# checkout the develop branch to start working
 	git checkout -q "$develop_branch"
