diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to
index d94cf460..c512bd88 100755
--- a/bin/cdist-deploy-to
+++ b/bin/cdist-deploy-to
@@ -57,7 +57,7 @@ __cdist_dir push "${__cdist_core_dir}" "${__cdist_remote_core_dir}"
 cdist-explorer-run-global     "$__cdist_target_host"
 cdist-manifest-run-init       "$__cdist_target_host"
 cdist-object-all              "$__cdist_target_host" cdist-object-prepare
-cdist-object-all              "$__cdist_target_host" cdist-object-run
+cdist-object-all              "$__cdist_target_host" __cdist_object_run
 cdist-cache                   "$__cdist_target_host"
 
 __cdist_echo info "cdist $__cdist_version: Successfully finished run"
diff --git a/bin/cdist-object-run b/bin/cdist-object-run
deleted file mode 100755
index 737c962b..00000000
--- a/bin/cdist-object-run
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-#
-# 2011 Nico Schottelius (nico-cdist at schottelius.org)
-# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
-#
-# This file is part of cdist.
-#
-# cdist is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see <http://www.gnu.org/licenses/>.
-#
-# 
-# For the given object:
-#  - run type explorers
-#  - run type manifest
-#  - generate code
-#  - copy object to target
-#  - execute code on target
-#
-
-. cdist-config
-[ $# -eq 2 ] || __cdist_usage "<target host> <object>"
-set -eu
-
-__cdist_target_host="$1"; shift
-__cdist_object_self="$1"; shift
-__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
-[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
-
-# Export to non-core for use in manifest and gencode scripts
-export $__cdist_name_var_self=$__cdist_object_self
-
-__cdist_object_finished="$(__cdist_object_finished "$__cdist_object_self")"
-if [ ! -f "$__cdist_object_finished" ]; then
-   # Resolve dependencies, if any
-   __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")"
-   if [ -f "$__cdist_object_require" ]; then
-      # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
-      while read __cdist_requirement; do
-         set -- "$@" "$__cdist_requirement"
-      done < "$__cdist_object_require"
-
-      while [ $# -gt 0 ]; do
-         __cdist_requirement="$1"; shift
-         __cdist_echo info "Resolving requirement $__cdist_requirement"
-         cdist-object-run "$__cdist_target_host" "$__cdist_requirement"
-      done
-   fi
-
-   __cdist_object_gencode_run "$__cdist_object_self"
-   __cdist_dir push "$(__cdist_object_dir "$__cdist_object_self")" \
-             "$(__cdist_remote_object_dir "$__cdist_object_self")"
-   __cdist_object_code_run "$__cdist_object_self"
-
-   # Mark this object as done
-   touch "$__cdist_object_finished"
-fi
diff --git a/core/__cdist_object_run b/core/__cdist_object_run
new file mode 100755
index 00000000..5da7aa1e
--- /dev/null
+++ b/core/__cdist_object_run
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# 2011 Nico Schottelius (nico-cdist at schottelius.org)
+# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see <http://www.gnu.org/licenses/>.
+#
+# 
+# For the given object:
+#  - run type explorers
+#  - run type manifest
+#  - generate code
+#  - copy object to target
+#  - execute code on target
+#
+
+__cdist_object_run()
+{
+   [ $# -eq 1 ] || __cdist_usage "<object>"
+
+   __cdist_object_self="$1"; shift
+   __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
+   [ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined"
+
+   # Export to non-core for use in manifest and gencode scripts
+   export $__cdist_name_var_self=$__cdist_object_self
+
+   __cdist_object_finished="$(__cdist_object_finished "$__cdist_object_self")"
+   if [ ! -f "$__cdist_object_finished" ]; then
+      # Resolve dependencies, if any
+      __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")"
+      if [ -f "$__cdist_object_require" ]; then
+         # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP
+         while read __cdist_requirement; do
+            set -- "$@" "$__cdist_requirement"
+         done < "$__cdist_object_require"
+
+         while [ $# -gt 0 ]; do
+            __cdist_requirement="$1"; shift
+            __cdist_echo info "Resolving requirement $__cdist_requirement"
+            __cdist_object_run "$__cdist_target_host" "$__cdist_requirement"
+         done
+      fi
+
+      __cdist_object_gencode_run "$__cdist_object_self"
+      __cdist_dir push "$(__cdist_object_dir "$__cdist_object_self")" \
+                "$(__cdist_remote_object_dir "$__cdist_object_self")"
+      __cdist_object_code_run "$__cdist_object_self"
+
+      # Mark this object as done
+      touch "$__cdist_object_finished"
+   fi
+}