diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h
index 46a194b..bd6180d 100644
--- a/MagickCore/magick-config.h
+++ b/MagickCore/magick-config.h
@@ -42,11 +42,6 @@
 #define MAGICKCORE_CODER_RELATIVE_PATH "ImageMagick-7.0.0/modules-Q16/coders"
 #endif
 
-/* ARCH specific config directory */
-#ifndef MAGICKCORE_CONFIGDIR_ARCH
-#define MAGICKCORE_CONFIGDIR_ARCH "/usr/local/lib/ImageMagick-7.0.0"
-#endif
-
 /* Directory where architecture-dependent configuration files live. */
 #ifndef MAGICKCORE_CONFIGURE_PATH
 #define MAGICKCORE_CONFIGURE_PATH "/usr/local/etc/ImageMagick/"
@@ -1170,11 +1165,6 @@
 /* Define if you have umem memory allocation library */
 /* #undef HasUMEM */
 
-/* ARCH specific include directory */
-#ifndef MAGICKCORE_INCLUDEDIR_ARCH
-#define MAGICKCORE_INCLUDEDIR_ARCH "/usr/local/include"
-#endif
-
 /* ImageMagick is formally installed under prefix */
 #ifndef MAGICKCORE_INSTALLED_SUPPORT
 #define MAGICKCORE_INSTALLED_SUPPORT 1
diff --git a/MagickCore/version.h b/MagickCore/version.h
index e0f37e9..eb94b4c 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -34,7 +34,7 @@
 #define MagickLibAddendum  "-0"
 #define MagickLibInterface  7
 #define MagickLibMinInterface  7
-#define MagickReleaseDate  "2011-10-27"
+#define MagickReleaseDate  "2011-10-28"
 #define MagickChangeDate   "20110801"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
diff --git a/Makefile.in b/Makefile.in
index 738c6fb..4e38cb2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1244,7 +1244,8 @@
 	$(AM_CFLAGS) $(CFLAGS) $(coders_palm_la_LDFLAGS) $(LDFLAGS) -o \
 	$@
 @WITH_MODULES_TRUE@am_coders_palm_la_rpath = -rpath $(codersdir)
-coders_pango_la_DEPENDENCIES = $(MAGICKCORE_LIBS) $(PANGO LIBS)
+coders_pango_la_DEPENDENCIES = $(MAGICKCORE_LIBS) \
+	$(am__DEPENDENCIES_1)
 am_coders_pango_la_OBJECTS = coders/coders_pango_la-pango.lo
 coders_pango_la_OBJECTS = $(am_coders_pango_la_OBJECTS)
 coders_pango_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
@@ -3515,7 +3516,7 @@
 coders_pango_la_SOURCES = coders/pango.c
 coders_pango_la_CPPFLAGS = $(MODULE_EXTRA_CPPFLAGS) $(PANGO_CFLAGS)
 coders_pango_la_LDFLAGS = $(MODULECOMMONFLAGS)
-coders_pango_la_LIBADD = $(MAGICKCORE_LIBS) $(PANGO LIBS)
+coders_pango_la_LIBADD = $(MAGICKCORE_LIBS) $(PANGO_LIBS)
 
 # Pattern module
 coders_pattern_la_SOURCES = coders/pattern.c
diff --git a/PerlMagick/Makefile.PL b/PerlMagick/Makefile.PL
index 02eaa54..85f0543 100644
--- a/PerlMagick/Makefile.PL
+++ b/PerlMagick/Makefile.PL
@@ -156,7 +156,7 @@
 }
 
 # defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
-my $INC_magick = '-I../ -I.. -pthread -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"';
+my $INC_magick = '-I../ -I.. -pthread -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"';
 my $LIBS_magick = '-L../MagickCore/.libs -lMagickCore -lperl -lm';
 my $CCFLAGS_magick = "$Config{'ccflags'} -fopenmp -g -O2 -Wall -pthread";
 my $LDFLAGS_magick   = "-L../MagickCore/.libs -lMagickCore $Config{'ldflags'} -L/usr/lib";
@@ -201,7 +201,7 @@
    #'CC' => 'gcc -std=gnu99 -std=gnu99',
 
    # C pre-processor flags (e.g. -I & -D options)
-   # 'CPPFLAGS' => "$Config{'cppflags'} -pthread -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2",
+   # 'CPPFLAGS' => "$Config{'cppflags'} -pthread -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libxml2",
 
    # C compiler flags (e.g. -O -g)
    'CCFLAGS' => $CCFLAGS_magick,
diff --git a/coders/Makefile.am b/coders/Makefile.am
index 26695a6..e4a37f2 100644
--- a/coders/Makefile.am
+++ b/coders/Makefile.am
@@ -696,7 +696,7 @@
 coders_pango_la_SOURCES     = coders/pango.c
 coders_pango_la_CPPFLAGS    = $(MODULE_EXTRA_CPPFLAGS) $(PANGO_CFLAGS)
 coders_pango_la_LDFLAGS     = $(MODULECOMMONFLAGS)
-coders_pango_la_LIBADD      = $(MAGICKCORE_LIBS) $(PANGO LIBS)
+coders_pango_la_LIBADD      = $(MAGICKCORE_LIBS) $(PANGO_LIBS)
 
 
 # Pattern module
diff --git a/config/config.h.in b/config/config.h.in
index 3761604..ea5cf28 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -27,9 +27,6 @@
 /* Subdirectory of lib where coder modules are installed */
 #undef CODER_RELATIVE_PATH
 
-/* ARCH specific config directory */
-#undef CONFIGDIR_ARCH
-
 /* Directory where architecture-dependent configuration files live. */
 #undef CONFIGURE_PATH
 
@@ -767,9 +764,6 @@
 /* Define if you have umem memory allocation library */
 #undef HasUMEM
 
-/* ARCH specific include directory */
-#undef INCLUDEDIR_ARCH
-
 /* ImageMagick is formally installed under prefix */
 #undef INSTALLED_SUPPORT
 
diff --git a/config/configure.xml b/config/configure.xml
index a3ff780..02e4e8f 100644
--- a/config/configure.xml
+++ b/config/configure.xml
@@ -11,7 +11,7 @@
   <configure name="LIB_VERSION" value="0x700"/>
   <configure name="LIB_VERSION_NUMBER" value="7,0,0,0"/>
   <configure name="SVN_REVISION" value="5750" />
-  <configure name="RELEASE_DATE" value="2011-10-27"/>
+  <configure name="RELEASE_DATE" value="2011-10-28"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
@@ -28,7 +28,7 @@
   <configure name="PCFLAGS" value="-fopenmp"/>
   <configure name="DEFS" value="-DHAVE_CONFIG_H"/>
   <configure name="LDFLAGS" value="-L/usr/local/lib -L/usr/lib"/>
-  <configure name="LIBS" value="-lMagickCore -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng12 -ldjvulibre -lfontconfig -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -pthread -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl"/>
+  <configure name="LIBS" value="-lMagickCore -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng12 -ldjvulibre -lfontconfig -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -pthread -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl"/>
   <configure name="CXX" value="g++"/>
   <configure name="CXXFLAGS" value="-g -O2 -pthread"/>
   <configure name="DISTCHECK_CONFIG_FLAGS" value="--disable-deprecated --with-quantum-depth=16 --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-perl=no"/>
diff --git a/configure b/configure
index e4b262f..757e3ab 100755
--- a/configure
+++ b/configure
@@ -1087,8 +1087,6 @@
 enable_openmp
 enable_opencl
 enable_largefile
-with_includedir_arch
-with_configdir_arch
 enable_shared
 enable_static
 with_pic
@@ -1853,8 +1851,6 @@
   --with-dmalloc          use dmalloc, as in
 			  http://www.dmalloc.com/dmalloc.tar.gz
   --without-threads       disable threads support
-  --includedir-arch=DIR   ARCH specific include directory
-  --configdir-arch=DIR    ARCH specific config directory
   --with-pic              try to use only PIC/non-PIC objects [default=use
                           both]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -9717,44 +9713,6 @@
 
 
 #
-# ARCH specific include directory
-#
-
-# Check whether --with-includedir-arch was given.
-if test "${with_includedir_arch+set}" = set; then :
-  withval=$with_includedir_arch; includedir_arch=$withval
-else
-  includedir_arch=$INCLUDE_DIR
-fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define INCLUDEDIR_ARCH "$includedir_arch"
-_ACEOF
-
-
-#
-# ARCH specific configuration directory
-#
-
-# Check whether --with-configdir-arch was given.
-if test "${with_configdir_arch+set}" = set; then :
-  withval=$with_configdir_arch; configdir_arch=$withval
-else
-  configdir_arch="${LIB_DIR}/${PACKAGE_NAME}-${PACKAGE_VERSION}"
-fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define CONFIGDIR_ARCH "$configdir_arch"
-_ACEOF
-
-
-#
-# Configure libtool & libltdl
-#
 # Configure libtool
 enable_dlopen=yes
 
@@ -30294,75 +30252,6 @@
     pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pango") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$PANGO_LIBS"; then
-    pkg_cv_PANGO_LIBS="$PANGO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pango") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pango" 2>&1`
-        else
-	        PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pango" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$PANGO_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                have_pango=no
-elif test $pkg_failed = untried; then
-	have_pango=no
-else
-	PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS
-	PANGO_LIBS=$pkg_cv_PANGO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	have_pango=yes
-fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5
-$as_echo_n "checking for PANGO... " >&6; }
-
-if test -n "$PANGO_CFLAGS"; then
-    pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
     { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangoft2\""; } >&5
   ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5
   ac_status=$?
@@ -30423,6 +30312,75 @@
 fi
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
 $as_echo "" >&6; }
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5
+$as_echo_n "checking for PANGO... " >&6; }
+
+if test -n "$PANGO_CFLAGS"; then
+    pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "pango") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PANGO_LIBS"; then
+    pkg_cv_PANGO_LIBS="$PANGO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "pango") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pango" 2>&1`
+        else
+	        PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pango" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$PANGO_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                have_pango=no
+elif test $pkg_failed = untried; then
+	have_pango=no
+else
+	PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS
+	PANGO_LIBS=$pkg_cv_PANGO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	have_pango=yes
+fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
 fi
 
 if test "$have_pango" = 'yes'; then
diff --git a/configure.ac b/configure.ac
index ea84801..bd73a1e 100755
--- a/configure.ac
+++ b/configure.ac
@@ -2426,10 +2426,10 @@
 PANGO_PKG=""
 if test "x$with_pango" = "xyes"; then
     AC_MSG_RESULT([-------------------------------------------------------------])
-    PKG_CHECK_MODULES(PANGO, pango, have_pango=yes, have_pango=no)
-    AC_MSG_RESULT([])
     PKG_CHECK_MODULES(PANGO, pangoft2, have_pangoft2=yes, have_pangoft2=no)
     AC_MSG_RESULT([])
+    PKG_CHECK_MODULES(PANGO, pango, have_pango=yes, have_pango=no)
+    AC_MSG_RESULT([])
 fi
 
 if test "$have_pango" = 'yes'; then
