diff --git a/cdist/conf/type/__cron/explorer/entry b/cdist/conf/type/__cron/explorer/entry
index 9b52d6e4..c3bf02d2 100755
--- a/cdist/conf/type/__cron/explorer/entry
+++ b/cdist/conf/type/__cron/explorer/entry
@@ -1,6 +1,7 @@
 #!/bin/sh
 #
 # 2011-2013 Steven Armstrong (steven-cdist at armstrong.cc)
+# 2013      Nico Schottelius (nico-cdist at schottelius.org)
 #
 # This file is part of cdist.
 #
@@ -18,22 +19,7 @@
 # along with cdist. If not, see <http://www.gnu.org/licenses/>.
 #
 
-name="$__object_id"
+name="$__object_name"
 user="$(cat "$__object/parameter/user")"
 
-prefix="#cdist:__cron/$name"
-suffix="#/cdist:__cron/$name"
-
-crontab -u $user -l 2>/dev/null | awk -v prefix="$prefix" -v suffix="$suffix" '
-{
-   if (index($0,prefix)) {
-      triggered=1
-   }
-   if (triggered) {
-      if (index($0,suffix)) {
-            triggered=0
-      }
-      print
-   }
-}
-'
+crontab -u $user -l 2>/dev/null | grep "# $name\$" || true
diff --git a/cdist/conf/type/__cron/gencode-remote b/cdist/conf/type/__cron/gencode-remote
index af06edb3..e1ac5ef9 100755
--- a/cdist/conf/type/__cron/gencode-remote
+++ b/cdist/conf/type/__cron/gencode-remote
@@ -1,6 +1,7 @@
 #!/bin/sh
 #
 # 2011 Steven Armstrong (steven-cdist at armstrong.cc)
+# 2013      Nico Schottelius (nico-cdist at schottelius.org)
 #
 # This file is part of cdist.
 #
@@ -18,45 +19,45 @@
 # along with cdist. If not, see <http://www.gnu.org/licenses/>.
 #
 
+name="$__object_name"
 user="$(cat "$__object/parameter/user")"
-state_should="$(cat "$__object/parameter/state" 2>/dev/null || echo "present")"
-state_is=$(diff -q "$__object/parameter/entry" "$__object/explorer/entry" \
-   && echo present \
-   || echo absent
-)
+command="$(cat "$__object/parameter/command")"
 
-if [ "$state_is" != "$state_should" ]; then
-   case "$state_should" in
-      present)
-         cat << DONE
-(
-crontab -u $user -l || true
-cat << EOC
-$(cat "$__object/parameter/entry")
-EOC
-) | crontab -u $user -
-DONE
-      ;;
-      absent)
-         # NOTE: keep variables in sync in manifest/explorer/gencode-*
-         prefix="#cdist:__cron/$name"
-         suffix="#/cdist:__cron/$name"
-         cat << DONE
-crontab -u $user -l | awk -v prefix="$prefix" -v suffix="$suffix" '
-{
-   if (index(\$0,prefix)) {
-      triggered=1
-   }
-   if (triggered) {
-      if (index(\$0,suffix)) {
-            triggered=0
-      }
-   } else {
-      print
-   }
-}
-' | crontab -u $user -
-DONE
-      ;;
-   esac
+if [ -f "$__object/parameter/raw" ]; then
+   raw="$(cat "$__object/parameter/raw")"
+   entry="$raw $command"
+else
+   minute="$(cat "$__object/parameter/minute" 2>/dev/null || echo "*")"
+   hour="$(cat "$__object/parameter/hour" 2>/dev/null || echo "*")"
+   day_of_month="$(cat "$__object/parameter/day_of_month" 2>/dev/null || echo "*")"
+   month="$(cat "$__object/parameter/month" 2>/dev/null || echo "*")"
+   day_of_week="$(cat "$__object/parameter/day_of_week" 2>/dev/null || echo "*")"
+   entry="$minute $hour $day_of_month $month $day_of_week $command"
 fi
+
+entry="$entry # $name"
+mkdir "$__object/files"
+echo "$entry" > "$__object/files/entry"
+
+if diff -q "$__object/files/entry" "$__object/explorer/entry" >/dev/null; then
+    state_is=present
+else
+    state_is=absent
+fi
+
+state_should="$(cat "$__object/parameter/state" 2>/dev/null || echo "present")"
+
+[ "$state_is" = "$state_should" ] && exit 0
+
+case "$state_should" in
+    present)
+        echo "("
+        echo "crontab -u $user -l 2>/dev/null || true"
+        echo "echo '$entry'"
+        echo ") | crontab -u $user -"
+    ;;
+    absent)
+        echo "( crontab -u $user -l 2>/dev/null || true ) | \\"
+        echo "grep -v \"# $name\\$\" | crontab -u $user -"
+    ;;
+esac
diff --git a/cdist/conf/type/__cron/manifest b/cdist/conf/type/__cron/manifest
deleted file mode 100755
index 71910bf5..00000000
--- a/cdist/conf/type/__cron/manifest
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-#
-# 2011-2013 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/>.
-#
-
-name="$__object_id"
-user="$(cat "$__object/parameter/user")"
-command="$(cat "$__object/parameter/command")"
-state="$(cat "$__object/parameter/state" 2>/dev/null || echo "present")"
-
-if [ -f "$__object/parameter/raw" ]; then
-   raw="$(cat "$__object/parameter/raw")"
-   entry="$raw $command"
-else
-   minute="$(cat "$__object/parameter/minute" 2>/dev/null || echo "*")"
-   hour="$(cat "$__object/parameter/hour" 2>/dev/null || echo "*")"
-   day_of_month="$(cat "$__object/parameter/day_of_month" 2>/dev/null || echo "*")"
-   month="$(cat "$__object/parameter/month" 2>/dev/null || echo "*")"
-   day_of_week="$(cat "$__object/parameter/day_of_week" 2>/dev/null || echo "*")"
-   entry="$minute $hour $day_of_month $month $day_of_week $command"
-fi
-
-# NOTE: keep variables in sync in manifest/explorer/gencode-*
-prefix="#cdist:__cron/$name"
-suffix="#/cdist:__cron/$name"
-cat >> "$__object/parameter/entry" << DONE
-"$prefix"
-"$entry"
-"$suffix"
-DONE