diff --git a/lib/functions.zsh b/lib/functions.zsh
index 24b7254fb..73b491a59 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -41,26 +41,27 @@ function mkcd takedir() {
 }
 
 function takeurl() {
-  data=$(mktemp)
-  curl -L $1 > $data
-  tar xf $data
-  thedir=$(tar tf $data | head -1)
-  rm $data
-  cd $thedir
+  local data thedir
+  data="$(mktemp)"
+  curl -L "$1" > "$data"
+  tar xf "$data"
+  thedir="$(tar tf "$data" | head -1)"
+  rm "$data"
+  cd "$thedir"
 }
 
 function takegit() {
-  git clone $1
-  cd $(basename ${1%%.git})
+  git clone "$1"
+  cd "$(basename ${1%%.git})"
 }
 
 function take() {
   if [[ $1 =~ ^(https?|ftp).*\.tar\.(gz|bz2|xz)$ ]]; then
-    takeurl $1
+    takeurl "$1"
   elif [[ $1 =~ ^([A-Za-z0-9]\+@|https?|git|ssh|ftps?|rsync).*\.git/?$ ]]; then
-    takegit $1
+    takegit "$1"
   else
-    takedir $1
+    takedir "$@"
   fi
 }