diff --git a/HACKERS_README b/HACKERS_README
index a5b1d23a..7d6aafdf 100755
--- a/HACKERS_README
+++ b/HACKERS_README
@@ -52,3 +52,6 @@ cdist-object-codegen-all localhost "$object_tmp" "$exec_tmp"
# Display result
find "$exec_tmp"
+
+# Transfer generated code
+cdist-exec-transfer localhost "$exec_tmp"
diff --git a/bin/cdist-config b/bin/cdist-config
index 68df3d4b..8542d23f 100755
--- a/bin/cdist-config
+++ b/bin/cdist-config
@@ -77,6 +77,7 @@ export __cdist_remote_explorer_dir
: ${__cdist_remote_cache_explorer:=$__cdist_remote_cache_dir/$__cdist_name_explorer}
export __cdist_remote_cache_explorer
: ${__cdist_remote_cache_bin:=$__cdist_remote_base_dir/$__cdist_name_bin}
+: ${__cdist_remote_cache_exec:=$__cdist_remote_base_dir/$__cdist_name_exec}
# Tempfiles need to be recreated for each individual script, unshared!
__cdist_tmp_dir=$(mktemp -d "/tmp/cdist.XXXXXXXXXXXX")
diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to
index 1e9bd85c..4fa31bfe 100755
--- a/bin/cdist-deploy-to
+++ b/bin/cdist-deploy-to
@@ -38,10 +38,12 @@ cdist-explorer-run "$__cdist_target_host" "$tmp_exp"
cdist-manifest-init "$__cdist_target_host" "$tmp_obj"
cdist-manifest-run-all "$__cdist_target_host" "$tmp_obj"
cdist-object-codegen-all "$__cdist_target_host" "$tmp_obj" "$tmp_exec"
+cdist-object-codegen-all "$__cdist_target_host" "$tmp_obj" "$tmp_exec"
exit 1
-cdist-target-exec "$__cdist_target_host" "$tmp_code"
+cdist-exec-transfer "$__cdist_target_host" "$tmp_exec"
+cdist-exec-run "$__cdist_target_host" "$tmp_exec"
# Create new cache - put into seperate script?
# cdist-cache migrate?
diff --git a/bin/cdist-exec-transfer b/bin/cdist-exec-transfer
index bf738355..d1ba128d 100755
--- a/bin/cdist-exec-transfer
+++ b/bin/cdist-exec-transfer
@@ -18,74 +18,21 @@
# along with cdist. If not, see .
#
#
-# FIXME: This script is ugly, should be either seperated into smaller ones,
-# but definitely be cleaned up - PROOF OF CONCEPT CODE
+# Transfer executables
#
. cdist-config
-if [ $# -ne 2 ]; then
- __cdist_usage " "
-fi
-
-export __cdist_target_host="$1"; shift
-export __cdist_output_dir="$1"; shift
-
+[ $# -eq 2 ] || __cdist_usage " "
set -e
-# create basedir
-ssh root@${__cdist_target_host} "mkdir -p \"${__cdist_remote_base_dir}\" \
- \"${__cdist_remote_cache_dir}\" \"${__cdist_remote_cache_bin}\" \
- \"${__cdist_remote_cache_explorer}\""
+export __cdist_target_host="$1"; shift
+export __cdist_exec_dir="$1"; shift
-# Transfer all explorers to the target dir - must be one level above, so
-# coyping it multiple times works: a -> remote:/base/ = remote:/base/a vs.
-# a -> remote:/base/a = remote:/base/a/a (second copy)
+
+# re-create basedir so it's clean
+ssh "root@${__cdist_target_host}" "rm -rf \"${__cdist_remote_cache_exec}\" && mkdir -p \"${__cdist_remote_cache_exec}\""
# FIXME: enable -q as soon as the code is cleaned up
-scp -r "${__cdist_explorer_dir}" \
- "root@${__cdist_target_host}:${__cdist_remote_base_dir}"
-
-# Transfer cdist binaries - FIXME: should transfer all (needed?) of them!
-scp "$(which cdist-explorer-coordinator)" "$(which cdist-config)" \
- "root@${__cdist_target_host}:${__cdist_remote_cache_bin}"
-
-# Execute explorer coordinator, which will save results on target
-ssh root@${__cdist_target_host} \
- "PATH=\"${__cdist_remote_cache_bin}:\$PATH\"
- \"${__cdist_remote_cache_bin}/cdist-explorer-coordinator\" \
- \"${__cdist_remote_explorer_dir}\" \"${__cdist_remote_cache_explorer}\""
-
-# Ensure local destination directory exists
-mkdir -p "$__cdist_output_dir"
-
-# FIXME: enable -q as soon as the code is cleaned up
-# Transfer back all results - FIXME: Add 2 level cache, so old version is kept until success
-scp -r "root@${__cdist_target_host}:${__cdist_remote_cache_explorer}/*" \
- "$__cdist_output_dir"
-
-
-exit 0
-
-# --------------------------------------------------------------------------------
-# old idea with shell scripts (also sexy)
-# Keep until above version successfully works
-
-
-cd "${__cdist_explorer_dir}"
-ls > "${__cdist_tmp_file}"
-
-# first load all functions
-while read funcfull; do
- cat "${funcfull}"
-done < "${__cdist_tmp_file}"
-
-# then execute functions
-while read funcfull; do
- sh="${funcfull##*/}"
- func="${sh%.sh}"
- var="__$func"
-
- echo "$var=\"\$($func)\""
- echo "echo $var=\\\"\$$var\\\""
-done < "${CDIST_TMP}"
+scp -r "${__cdist_exec_dir}"/* \
+ "root@${__cdist_target_host}:${__cdist_remote_cache_exec}"