diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index c63d7b9..2ffbc07 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -1037,16 +1037,6 @@
               exception);
             break;
           }
-        if (LocaleCompare("channel-extract",option+1) == 0)
-          {
-            puts("stand by...");
-            break;
-          }
-        if (LocaleCompare("channel-swap",option+1) == 0)
-          {
-            puts("stand by...");
-            break;
-          }
         if (LocaleCompare("charcoal",option+1) == 0)
           {
             /*
@@ -3267,12 +3257,8 @@
   static const char
     *channel_operators[]=
     {
-      "-channel-extract channel-list",
-      "                     extract the channels in order",
-      "-channel-inject channel-list",
-      "                     inject the channels in order",
-      "-channel-swap channel,channel",
-      "                     swap channels",
+      "-channel-ops expression",
+      "                     exchange, extract, or transfer one or more image channels",
       (char *) NULL
     },
     *miscellaneous[]=
@@ -4047,39 +4033,7 @@
                 argv[i]);
             break;
           }
-        if (LocaleCompare("channel-extract",option+1) == 0)
-          {
-            ssize_t
-              channel;
-
-            if (*option == '+')
-              break;
-            i++;
-            if (i == (ssize_t) (argc-1))
-              ThrowMogrifyException(OptionError,"MissingArgument",option);
-            channel=ParsePixelChannelOption(argv[i]);
-            if (channel < 0)
-              ThrowMogrifyException(OptionError,"UnrecognizedChannelType",
-                argv[i]);
-            break;
-          }
-        if (LocaleCompare("channel-inject",option+1) == 0)
-          {
-            ssize_t
-              channel;
-
-            if (*option == '+')
-              break;
-            i++;
-            if (i == (ssize_t) (argc-1))
-              ThrowMogrifyException(OptionError,"MissingArgument",option);
-            channel=ParsePixelChannelOption(argv[i]);
-            if (channel < 0)
-              ThrowMogrifyException(OptionError,"UnrecognizedChannelType",
-                argv[i]);
-            break;
-          }
-        if (LocaleCompare("channel-swap",option+1) == 0)
+        if (LocaleCompare("channel-ops",option+1) == 0)
           {
             ssize_t
               channel;
@@ -7389,9 +7343,20 @@
       }
       case 'c':
       {
-        if (LocaleCompare("channel-inject",option+1) == 0)
+        if (LocaleCompare("channel-ops",option+1) == 0)
           {
-            puts("stand by...");
+            Image
+              *channel_image;
+
+            (void) SyncImagesSettings(mogrify_info,*images,exception);
+            channel_image=ChannelOperationImage(*images,argv[i+1],exception);
+            if (channel_image == (Image *) NULL)
+              {
+                status=MagickFalse;
+                break;
+              }
+            *images=DestroyImageList(*images);
+            *images=channel_image;
             break;
           }
         if (LocaleCompare("clut",option+1) == 0)