diff --git a/zshrc b/zshrc
index c8fd834..ac96b8c 100644
--- a/zshrc
+++ b/zshrc
@@ -704,69 +704,6 @@ function translate()
   wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=${1}&sl=${2}&tl=${3}" | sed 's/\[\[\[\"//' | cut -d \" -f 1
 }
 
-## fzf
-if [ -d ~/.fzf ]; then
-[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
-
-# ff - cd to selected directory (exclude hidden directories
-ff() {
-	local dir
-	dir=$(find ${1:-.} -path '*/\.*' -prune \
-		-o -type d -print 2> /dev/null | fzf +m) &&
-		cd "$dir"
-}
-
-# ffh - hidden directories only
-ffh() {
-	local dir
-	dir=$(find ${1:-.} -type d 2> /dev/null | fzf +m) && cd "$dir"
-}
-
-# ffa - all directories
-
-# ffr - cd to selected parent directory
-ffr() {
-	local declare dirs=()
-	get_parent_dirs() {
-		if [[ -d "${1}" ]]; then dirs+=("$1"); else return; fi
-		if [[ "${1}" == '/' ]]; then
-			for _dir in "${dirs[@]}"; do echo $_dir; done
-		else
-			get_parent_dirs $(dirname "$1")
-		fi
-	}
-	local DIR=$(get_parent_dirs $(realpath "${1:-$PWD}") | fzf-tmux --tac)
-	cd "$DIR"
-}
-
-# fff - cd into the directory of the selected file
-fff() {
-	local file
-	local dir
-	file=$(fzf +m -q "$1") && dir=$(dirname "$file") && cd "$dir"
-}
-
-# cf - fuzzy cd from anywhere
-# ex: cf word1 word2 ... (even part of a file name)
-# zsh autoload function
-cf() {
-	local file
-
-	file="$(locate -Ai -0 $@ | grep -z -vE '~$' | fzf --read0 -0 -1)"
-
-	if [[ -n $file ]]
-	then
-		if [[ -d $file ]]
-		then
-			cd -- $file
-		else
-			cd -- ${file:h}
-		fi
-	fi
-}
-
-fi
-
 ################################################
 # 2. Prompt et définition des touches basiques #
 ################################################
@@ -1174,6 +1111,80 @@ setopt extendedglob
 ############### 9. Modules ################
 ###########################################
 
+## fzf
+if [ -d ~/.fzf ]; then
+
+if [[ ! "$PATH" == *"${HOME}"/.fzf/bin* ]]; then
+  export PATH="$PATH:${HOME}/.fzf/bin"
+fi
+
+# Auto-completion
+# ---------------
+[[ $- == *i* ]] && source "${HOME}/.fzf/shell/completion.zsh" 2> /dev/null
+
+# Key bindings
+# ------------
+source "${HOME}/.fzf/shell/key-bindings.zsh"
+
+# ff - cd to selected directory (exclude hidden directories
+ff() {
+	local dir
+	dir=$(find ${1:-.} -path '*/\.*' -prune \
+		-o -type d -print 2> /dev/null | fzf +m) &&
+		cd "$dir"
+}
+
+# ffh - hidden directories only
+ffh() {
+	local dir
+	dir=$(find ${1:-.} -type d 2> /dev/null | fzf +m) && cd "$dir"
+}
+
+# ffa - all directories
+
+# ffr - cd to selected parent directory
+ffr() {
+	local declare dirs=()
+	get_parent_dirs() {
+		if [[ -d "${1}" ]]; then dirs+=("$1"); else return; fi
+		if [[ "${1}" == '/' ]]; then
+			for _dir in "${dirs[@]}"; do echo $_dir; done
+		else
+			get_parent_dirs $(dirname "$1")
+		fi
+	}
+	local DIR=$(get_parent_dirs $(realpath "${1:-$PWD}") | fzf-tmux --tac)
+	cd "$DIR"
+}
+
+# fff - cd into the directory of the selected file
+fff() {
+	local file
+	local dir
+	file=$(fzf +m -q "$1") && dir=$(dirname "$file") && cd "$dir"
+}
+
+# cf - fuzzy cd from anywhere
+# ex: cf word1 word2 ... (even part of a file name)
+# zsh autoload function
+cf() {
+	local file
+
+	file="$(locate -Ai -0 $@ | grep -z -vE '~$' | fzf --read0 -0 -1)"
+
+	if [[ -n $file ]]
+	then
+		if [[ -d $file ]]
+		then
+			cd -- $file
+		else
+			cd -- ${file:h}
+		fi
+	fi
+}
+
+fi
+
 # zsh-syntax-highlighting
 [ -f ~/repos/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && source ~/repos/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh