diff --git a/sites/all/modules/contrib/imagecache_actions/coloractions/imagecache_coloractions.module b/sites/all/modules/contrib/imagecache_actions/coloractions/imagecache_coloractions.module
index 3a9297b..51e33f8 100755
--- a/sites/all/modules/contrib/imagecache_actions/coloractions/imagecache_coloractions.module
+++ b/sites/all/modules/contrib/imagecache_actions/coloractions/imagecache_coloractions.module
@@ -80,6 +80,13 @@ function imagecache_coloractions_image_effect_info() {
     'summary theme' => 'coloractions_convert_summary',
   );
 
+  $effects['coloractions_interlace'] = array(
+    'label' => t('Interlace / Progressive'),
+    'help' => t('Create interlaced PNG/GIF or progressive JPG. ImageMagick only.'),
+    'effect callback' => 'coloractions_interlace_image',
+    'dimensions passthrough' => TRUE,
+  );
+
   $effects['imagecache_alpha'] = array(
     'label' => t('Alpha Transparency'),
     'help' => t('Adjust transparency.'),
@@ -497,3 +504,34 @@ function coloractions_file_formats() {
   return array('image/jpeg' => 'jpg', 'image/gif' => 'gif', 'image/png' => 'png');
 }
 
+/**
+ * Implementation of hook_image()
+ *
+ * Process the imagecache action on the passed image
+ */
+function coloractions_interlace_image($image, $data = array()) {
+  image_toolkit_invoke('interlace_image', $image, array($data));
+  return TRUE;
+}
+
+/**
+ * Implementation of hook_{toolkit}_{effect}()
+ *
+ * image_toolkit_invoke will exit with an error when no implementation is
+ * provided for the active toolkit so provide an empty operation for the GD
+ * tookit
+ */
+function image_gd_interlace_image($image, $data) {
+  watchdog('image', 'Image %file could not be interlaced: !message', array('%file' => $image->source, '!message' => t('This feature only works with ImageMagick, not GD.')));
+  return TRUE;
+}
+
+/**
+ * Implements hook_{toolkit}_{effect}().
+ *
+ * Interlacing with imagemagick is done by adding an argument.
+ */
+function image_imagemagick_interlace_image($image, $data) {
+  $image->ops[] = '-interlace Plane';
+  return TRUE;
+}
