diff --git a/magick/accelerate.c b/magick/accelerate.c
index 7b93c33..039427c 100644
--- a/magick/accelerate.c
+++ b/magick/accelerate.c
@@ -96,7 +96,7 @@
 %  The format of the AccelerateConvolveImage method is:
 %
 %      Image *AccelerateConvolveImage(const Image *image,
-%        const MagickKernel *kernel,Image *convolve_image,
+%        const KernelInfo *kernel,Image *convolve_image,
 %        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
@@ -587,13 +587,13 @@
 #endif
 
 MagickExport MagickBooleanType AccelerateConvolveImage(const Image *image,
-  const MagickKernel *kernel,Image *convolve_image,ExceptionInfo *exception)
+  const KernelInfo *kernel,Image *convolve_image,ExceptionInfo *exception)
 {
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(kernel != (MagickKernel *) NULL);
+  assert(kernel != (KernelInfo *) NULL);
   assert(kernel->signature == MagickSignature);
   assert(convolve_image != (Image *) NULL);
   assert(convolve_image->signature == MagickSignature);
diff --git a/magick/accelerate.h b/magick/accelerate.h
index d9b0968..d7a941a 100644
--- a/magick/accelerate.h
+++ b/magick/accelerate.h
@@ -25,7 +25,7 @@
 #include <magick/morphology.h>
 
 extern MagickBooleanType
-  AccelerateConvolveImage(const Image *,const MagickKernel *,Image *,
+  AccelerateConvolveImage(const Image *,const KernelInfo *,Image *,
     ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/magick/effect.c b/magick/effect.c
index fccd214..386022c 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -2129,10 +2129,10 @@
 %
 %  The format of the FilterImage method is:
 %
-%      Image *FilterImage(const Image *image,const MagickKernel *kernel,
+%      Image *FilterImage(const Image *image,const KernelInfo *kernel,
 %        ExceptionInfo *exception)
 %      Image *FilterImageChannel(const Image *image,const ChannelType channel,
-%        const MagickKernel *kernel,ExceptionInfo *exception)
+%        const KernelInfo *kernel,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2146,7 +2146,7 @@
 %
 */
 
-MagickExport Image *FilterImage(const Image *image,const MagickKernel *kernel,
+MagickExport Image *FilterImage(const Image *image,const KernelInfo *kernel,
   ExceptionInfo *exception)
 {
   Image
@@ -2157,7 +2157,7 @@
 }
 
 MagickExport Image *FilterImageChannel(const Image *image,
-  const ChannelType channel,const MagickKernel *kernel,ExceptionInfo *exception)
+  const ChannelType channel,const KernelInfo *kernel,ExceptionInfo *exception)
 {
 #define FilterImageTag  "Filter/Image"
 
diff --git a/magick/effect.h b/magick/effect.h
index 73197b2..2f6fc5a 100644
--- a/magick/effect.h
+++ b/magick/effect.h
@@ -76,8 +76,8 @@
   *DespeckleImage(const Image *,ExceptionInfo *),
   *EdgeImage(const Image *,const double,ExceptionInfo *),
   *EmbossImage(const Image *,const double,const double,ExceptionInfo *),
-  *FilterImage(const Image *,const MagickKernel *,ExceptionInfo *),
-  *FilterImageChannel(const Image *,const ChannelType,const MagickKernel *,
+  *FilterImage(const Image *,const KernelInfo *,ExceptionInfo *),
+  *FilterImageChannel(const Image *,const ChannelType,const KernelInfo *,
      ExceptionInfo *),
   *GaussianBlurImage(const Image *,const double,const double,ExceptionInfo *),
   *GaussianBlurImageChannel(const Image *,const ChannelType,const double,
diff --git a/magick/methods.h b/magick/methods.h
index daafe24..d0f3820 100644
--- a/magick/methods.h
+++ b/magick/methods.h
@@ -50,7 +50,7 @@
 #define AcquireImage  PrependMagickMethod(AcquireImage)
 #define AcquireIndexes  PrependMagickMethod(AcquireIndexes)
 #define AcquireKernelBuiltIn  PrependMagickMethod(AcquireKernelBuiltIn)
-#define AcquireKernelFromString  PrependMagickMethod(AcquireKernelFromString)
+#define AcquireKernelInfo  PrependMagickMethod(AcquireKernelInfo)
 #define AcquireMagickMatrix  PrependMagickMethod(AcquireMagickMatrix)
 #define AcquireMagickMemory  PrependMagickMethod(AcquireMagickMemory)
 #define AcquireMagickResource  PrependMagickMethod(AcquireMagickResource)
diff --git a/magick/morphology.c b/magick/morphology.c
index 4abe7a5..7dbc9fc 100644
--- a/magick/morphology.c
+++ b/magick/morphology.c
@@ -103,7 +103,7 @@
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  AcquireKernelFromString() takes the given string (generally supplied by the
+%  AcquireKernelInfo() takes the given string (generally supplied by the
 %  user) and converts it into a Morphology/Convolution Kernel.  This allows
 %  users to specify a kernel from a number of pre-defined kernels, or to fully
 %  specify their own kernel for a specific Convolution or Morphology
@@ -152,7 +152,7 @@
 %
 %  The format of the AcquireKernal method is:
 %
-%      MagickKernel *AcquireKernelFromString(const char *kernel_string)
+%      KernelInfo *AcquireKernelInfo(const char *kernel_string)
 %
 %  A description of each parameter follows:
 %
@@ -160,9 +160,9 @@
 %
 */
 
-MagickExport MagickKernel *AcquireKernelFromString(const char *kernel_string)
+MagickExport KernelInfo *AcquireKernelInfo(const char *kernel_string)
 {
-  MagickKernel
+  KernelInfo
     *kernel;
 
   char
@@ -190,9 +190,9 @@
     long
       type;
 
-    type=ParseMagickOption(MagickKernelOptions,MagickFalse,token);
+    type=ParseMagickOption(KernelInfoOptions,MagickFalse,token);
     if ( type < 0 || type == UserDefinedKernel )
-      return((MagickKernel *)NULL);
+      return((KernelInfo *)NULL);
 
     while (((isspace((int) ((unsigned char) *p)) != 0) ||
            (*p == ',') || (*p == ':' )) && (*p != '\0'))
@@ -213,11 +213,11 @@
         args.psi = (double)(((long)args.sigma-1)/2);
     }
 
-    return(AcquireKernelBuiltIn((MagickKernelType)type, &args));
+    return(AcquireKernelBuiltIn((KernelInfoType)type, &args));
   }
 
-  kernel=(MagickKernel *) AcquireMagickMemory(sizeof(*kernel));
-  if (kernel == (MagickKernel *)NULL)
+  kernel=(KernelInfo *) AcquireMagickMemory(sizeof(*kernel));
+  if (kernel == (KernelInfo *)NULL)
     return(kernel);
   (void) ResetMagickMemory(kernel,0,sizeof(*kernel));
   kernel->type = UserDefinedKernel;
@@ -322,7 +322,7 @@
 %
 %  The format of the AcquireKernalBuiltIn method is:
 %
-%      MagickKernel *AcquireKernelBuiltIn(const MagickKernelType type,
+%      KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type,
 %           const GeometryInfo args)
 %
 %  A description of each parameter follows:
@@ -473,10 +473,10 @@
 %
 */
 
-MagickExport MagickKernel *AcquireKernelBuiltIn(const MagickKernelType type,
+MagickExport KernelInfo *AcquireKernelBuiltIn(const KernelInfoType type,
    const GeometryInfo *args)
 {
-  MagickKernel
+  KernelInfo
     *kernel;
 
   register unsigned long
@@ -489,8 +489,8 @@
   double
     nan = sqrt((double)-1.0);  /* Special Value : Not A Number */
 
-  kernel=(MagickKernel *) AcquireMagickMemory(sizeof(*kernel));
-  if (kernel == (MagickKernel *) NULL)
+  kernel=(KernelInfo *) AcquireMagickMemory(sizeof(*kernel));
+  if (kernel == (KernelInfo *) NULL)
     return(kernel);
   (void) ResetMagickMemory(kernel,0,sizeof(*kernel));
   kernel->value_min = kernel->value_max = 0.0;
@@ -656,7 +656,7 @@
             kernel->offset_x = kernel->offset_y = (kernel->width-1)/2;
           }
         else {
-            /* NOTE: user defaults set in "AcquireKernelFromString()" */
+            /* NOTE: user defaults set in "AcquireKernelInfo()" */
             if ( args->rho < 1.0 || args->sigma < 1.0 )
               return(DestroyKernel(kernel));       /* invalid args given */
             kernel->width = (unsigned long)args->rho;
@@ -858,7 +858,7 @@
 %
 %  The format of the DestroyKernel method is:
 %
-%      MagickKernel *DestroyKernel(MagickKernel *kernel)
+%      KernelInfo *DestroyKernel(KernelInfo *kernel)
 %
 %  A description of each parameter follows:
 %
@@ -866,11 +866,11 @@
 %
 */
 
-MagickExport MagickKernel *DestroyKernel(MagickKernel *kernel)
+MagickExport KernelInfo *DestroyKernel(KernelInfo *kernel)
 {
-  assert(kernel != (MagickKernel *) NULL);
+  assert(kernel != (KernelInfo *) NULL);
   kernel->values=(double *)RelinquishMagickMemory(kernel->values);
-  kernel=(MagickKernel *) RelinquishMagickMemory(kernel);
+  kernel=(KernelInfo *) RelinquishMagickMemory(kernel);
   return(kernel);
 }
 
@@ -890,14 +890,14 @@
 %
 %  The format of the KernelNormalize method is:
 %
-%      void KernelRotate (MagickKernel *kernel)
+%      void KernelRotate (KernelInfo *kernel)
 %
 %  A description of each parameter follows:
 %
 %    o kernel: the Morphology/Convolution kernel
 %
 */
-MagickExport void KernelNormalize(MagickKernel *kernel)
+MagickExport void KernelNormalize(KernelInfo *kernel)
 {
   register unsigned long
     i;
@@ -928,21 +928,21 @@
 %
 %  The format of the KernelNormalize method is:
 %
-%      void KernelPrint (MagickKernel *kernel)
+%      void KernelPrint (KernelInfo *kernel)
 %
 %  A description of each parameter follows:
 %
 %    o kernel: the Morphology/Convolution kernel
 %
 */
-MagickExport void KernelPrint(MagickKernel *kernel)
+MagickExport void KernelPrint(KernelInfo *kernel)
 {
   unsigned long
     i, u, v;
 
   fprintf(stderr,
         "Kernel \"%s\" of size %lux%lu%+ld%+ld  with value from %lg to %lg\n",
-        MagickOptionToMnemonic(MagickKernelOptions, kernel->type),
+        MagickOptionToMnemonic(KernelInfoOptions, kernel->type),
         kernel->width, kernel->height,
         kernel->offset_x, kernel->offset_y,
         kernel->value_min, kernel->value_max);
@@ -973,7 +973,7 @@
 %
 %  The format of the KernelRotate method is:
 %
-%      void KernelRotate (MagickKernel *kernel, double angle)
+%      void KernelRotate (KernelInfo *kernel, double angle)
 %
 %  A description of each parameter follows:
 %
@@ -982,7 +982,7 @@
 %    o angle: angle to rotate in degrees
 %
 */
-MagickExport void KernelRotate(MagickKernel *kernel, double angle)
+MagickExport void KernelRotate(KernelInfo *kernel, double angle)
 {
   /* WARNING: Currently assumes the kernel (rightly) is horizontally symetrical
   **
@@ -1087,8 +1087,11 @@
 %  The format of the MorphologyImage method is:
 %
 %      Image *MorphologyImage(const Image *image, const MorphologyMethod
-%        method, const long iterations, const ChannelType channel,
-%        const MagickKernel *kernel, ExceptionInfo *exception)
+%        method, const long iterations, const KernelInfo *kernel,
+%        ExceptionInfo *exception)
+%      Image *MorphologyImage(const Image *image, const ChannelType channel,
+%        const MorphologyMethod method, const long iterations, 
+%        const KernelInfo *kernel, ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1142,9 +1145,9 @@
  */
 static unsigned long MorphologyApply(const Image *image, Image
      *result_image, const MorphologyMethod method, const ChannelType channel,
-     const MagickKernel *kernel, ExceptionInfo *exception)
+     const KernelInfo *kernel, ExceptionInfo *exception)
 {
-  #define MorphologyTag  "Morphology/Image"
+#define MorphologyTag  "Morphology/Image"
 
   long
     progress,
@@ -1576,9 +1579,20 @@
   return(status ? changed : 0);
 }
 
-MagickExport Image *MorphologyImage(const Image *image,
+MagickExport Image *MorphologyImage(const Image *image,MorphologyMethod method,
+  const long iterations,KernelInfo *kernel, ExceptionInfo *exception)
+{
+  Image
+    *morphology_image;
+
+  morphology_image=MorphologyImageChannel(image,DefaultChannels,method,
+    iterations,kernel,exception);
+  return(morphology_image);
+}
+
+MagickExport Image *MorphologyImageChannel(const Image *image,
   const ChannelType channel, MorphologyMethod method, const long iterations,
-  MagickKernel *kernel, ExceptionInfo *exception)
+  KernelInfo *kernel, ExceptionInfo *exception)
 {
   unsigned long
     count,
@@ -1603,7 +1617,7 @@
   /* kernel must be valid at this point
    * (except maybe for posible future morphology methods like "Prune"
    */
-  assert(kernel != (MagickKernel *)NULL);
+  assert(kernel != (KernelInfo *)NULL);
 
   count = 0;
   limit = iterations;
@@ -1614,28 +1628,28 @@
   changed=MagickFalse;
   switch( method ) {
     case CloseMorphology:
-      new_image = MorphologyImage(image, DialateMorphology, iterations, channel,
+      new_image = MorphologyImageChannel(image, DialateMorphology, iterations, channel,
             kernel, exception);
       if (new_image == (Image *) NULL)
         return((Image *) NULL);
       method = ErodeMorphology;
       break;
     case OpenMorphology:
-      new_image = MorphologyImage(image, ErodeMorphology, iterations, channel,
+      new_image = MorphologyImageChannel(image, ErodeMorphology, iterations, channel,
             kernel, exception);
       if (new_image == (Image *) NULL)
         return((Image *) NULL);
       method = DialateMorphology;
       break;
     case CloseIntensityMorphology:
-      new_image = MorphologyImage(image, DialateIntensityMorphology,
+      new_image = MorphologyImageChannel(image, DialateIntensityMorphology,
             iterations, channel, kernel, exception);
       if (new_image == (Image *) NULL)
         return((Image *) NULL);
       method = ErodeIntensityMorphology;
       break;
     case OpenIntensityMorphology:
-      new_image = MorphologyImage(image, ErodeIntensityMorphology,
+      new_image = MorphologyImageChannel(image, ErodeIntensityMorphology,
             iterations, channel, kernel, exception);
       if (new_image == (Image *) NULL)
         return((Image *) NULL);
diff --git a/magick/morphology.h b/magick/morphology.h
index 1cadbc0..26753ad 100644
--- a/magick/morphology.h
+++ b/magick/morphology.h
@@ -42,7 +42,7 @@
   ManhattenKernel,
   EuclideanKernel,
   UserDefinedKernel   /* user specified kernel values */
-} MagickKernelType;
+} KernelInfoType;
 
 typedef enum
 {
@@ -61,7 +61,7 @@
 
 typedef struct
 {
-  MagickKernelType
+  KernelInfoType
     type;
 
   unsigned long
@@ -70,8 +70,8 @@
     offset_x,
     offset_y;
 
-  double *
-    values;
+  double
+    *values;
 
   double
     value_min,
@@ -84,22 +84,23 @@
 
   unsigned long
     signature;
-} MagickKernel;
+} KernelInfo;
 
-extern MagickExport MagickKernel
-  *AcquireKernelFromString(const char *),
-  *AcquireKernelBuiltIn(const MagickKernelType, const GeometryInfo *),
-  *DestroyKernel(MagickKernel *);
+extern MagickExport KernelInfo
+  *AcquireKernelInfo(const char *),
+  *AcquireKernelBuiltIn(const KernelInfoType, const GeometryInfo *),
+  *DestroyKernel(KernelInfo *);
 
 extern MagickExport void
-  KernelNormalize(MagickKernel *),
-  KernelPrint(MagickKernel *),
-  KernelRotate(MagickKernel *, double);
+  KernelNormalize(KernelInfo *),
+  KernelPrint(KernelInfo *),
+  KernelRotate(KernelInfo *, double);
 
 extern MagickExport Image
-  *MorphologyImage(const Image *, const ChannelType, MorphologyMethod,
-      const long, MagickKernel *, ExceptionInfo *);
-
+  *MorphologyImage(const Image *,MorphologyMethod,const long,KernelInfo *,
+    ExceptionInfo *),
+  *MorphologyImageChannel(const Image *,const ChannelType,MorphologyMethod,
+    const long,KernelInfo *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/magick/option.c b/magick/option.c
index bcc2648..26d1ef6 100644
--- a/magick/option.c
+++ b/magick/option.c
@@ -1115,7 +1115,7 @@
     { "Intent", (long) MagickIntentOptions, MagickFalse },
     { "Interlace", (long) MagickInterlaceOptions, MagickFalse },
     { "Interpolate", (long) MagickInterpolateOptions, MagickFalse },
-    { "Kernel", (long) MagickKernelOptions, MagickFalse },
+    { "Kernel", (long) KernelInfoOptions, MagickFalse },
     { "Layers", (long) MagickLayerOptions, MagickFalse },
     { "LineCap", (long) MagickLineCapOptions, MagickFalse },
     { "LineJoin", (long) MagickLineJoinOptions, MagickFalse },
@@ -1702,7 +1702,7 @@
     case MagickIntentOptions: return(IntentOptions);
     case MagickInterlaceOptions: return(InterlaceOptions);
     case MagickInterpolateOptions: return(InterpolateOptions);
-    case MagickKernelOptions: return(KernelOptions);
+    case KernelInfoOptions: return(KernelOptions);
     case MagickLayerOptions: return(LayerOptions);
     case MagickLineCapOptions: return(LineCapOptions);
     case MagickLineJoinOptions: return(LineJoinOptions);
diff --git a/magick/option.h b/magick/option.h
index 0a42ffa..16a99e9 100644
--- a/magick/option.h
+++ b/magick/option.h
@@ -89,7 +89,7 @@
   MagickTypeOptions,
   MagickValidateOptions,
   MagickVirtualPixelOptions,
-  MagickKernelOptions,
+  KernelInfoOptions,
   MagickMorphologyOptions
 } MagickOption;