diff --git a/m4/alberta-check.m4 b/m4/alberta-check.m4
index dd7e2bd8dbe925b7086294befa3702678e61e23b..0cdfd0a25559f776742678a26a0e5b237b34fea6 100644
--- a/m4/alberta-check.m4
+++ b/m4/alberta-check.m4
@@ -1,3 +1,159 @@
+dnl
+dnl Check for ALBERTA libraries at given dimensions, taking EL_INDEX and DEBUG
+dnl into account. $1 is dimension, $2 is DIM_OF_WORLD.
+dnl
+dnl old style (ALBERTA-1.2)
+dnl
+dnl ALBERTA_CHECK(DIM, DIM_OF_WORLD)
+dnl
+dnl New style: library name is
+dnl
+dnl libALBERTA<DIM><DOW>_<DEBUG>[EL_INDEX]
+dnl
+dnl EL_INDEX is present ONLY if it is non-zero
+dnl
+dnl
+dnl
+dnl new style (DIM is variable)
+dnl
+dnl ALBERTA_CHECK(DIM_OF_WORLD)
+dnl
+dnl New style: library name is
+dnl
+dnl libALBERTA<DOW>_<DEBUG><EL_INDEX>
+dnl
+
+dnl
+dnl Check for ALBERTA libraries at given dimensions, taking EL_INDEX and DEBUG
+dnl into account. $1 is dimension, $2 is DIM_OF_WORLD.
+dnl
+AC_DEFUN([ALBERTA_CHECK],
+[AC_REQUIRE([ALBERTA_TYPE_SIZES])
+AC_REQUIRE([ALBERTA_OPTIONS])
+AC_REQUIRE([AC_SET_PREFIX])
+AC_REQUIRE([ALBERTA_AUX_CHECK])
+#
+# Now check for libALBERTA_XXX itself
+#
+# BIG FAT NOTE:
+#
+m4_if($#,1,[ALBERTA_CHECK_NEWLIBS($1)],[ALBERTA_CHECK_OLDLIBS($1,$2)])
+])
+
+dnl
+dnl New-style, only DIM_OF_WORLD is fixed.
+dnl
+dnl DIM_OF_WORLD is passed in $1
+dnl 
+AC_DEFUN([ALBERTA_CHECK_NEWLIBS],
+[
+ALBERTA_LIB_$1=ALBERTA$1_${ALBERTA_DEBUG}${EL_INDEX}
+ALBERTA_LIB_$1_C=ac_cv_lib_ALBERTA$1_${ALBERTA_DEBUG}${EL_INDEX}
+#
+AC_CACHE_CHECK([for additional libraries needed to link],
+	[ac_cv_libalberta$1_gfxlibs],
+	[ac_cv_libalberta$1_gfxlibs=unset
+	for GFX_LIBS in	"" \
+			"$OPENGL_LIB ${X_LIBS} -lX11" \
+			"$GLTOOLS_LIB $OPENGL_LIB ${X_LIBS} -lX11" \
+			"$PLOT_LIB $OPENGL_LIB ${X_LIBS} -lX11" \
+			"$GLTOOLS_LIB $PLOT_LIB $OPENGL_LIB ${X_LIBS} -lX11"
+	do
+	  eval "unset ${ALBERTA_LIB_$1_C}___main"
+	  AC_CHECK_LIB($ALBERTA_LIB_$1, main,
+	  [ac_cv_libalberta$1_gfxlibs="$GFX_LIBS"
+	  break],,
+	  [$CSOLVER_ALL_LIB $GFX_LIBS])
+	done])
+
+if test "$ac_cv_libalberta$1_gfxlibs" = unset; then
+    AC_MSG_ERROR([Unable to link a program with lib$ALBERTA_LIB_$1!])
+else
+    ALBERTA_LIBS_$1="-L$ALBERTA_LIB_PATH -l$ALBERTA_LIB_$1 $CSOLVER_ALL_LIB $ac_cv_libalberta$1_gfxlibs"
+fi
+AC_SUBST([ALBERTA_LIBS_$1])
+dnl
+dnl search for alberta.h header
+dnl
+AC_CACHE_CHECK(
+	[whether alberta.h exist and works with DIM_OF_WORLD=$1],
+	[ac_cv_header_alberta$1_h],
+	[ac_alberta_save_CPPFLAGS="$CPPFLAGS"
+	unset ac_cv_header_alberta_h
+	CPPFLAGS="-DDIM_OF_WORLD=$1 -DEL_INDEX=${EL_INDEX} -I$ALBERTA_INCLUDE_PATH $CPPFLAGS"
+	AC_CHECK_HEADERS(alberta.h,
+		[unset ac_cv_header_alberta_h
+		ac_cv_header_alberta$1_h=yes],
+		[ac_cv_header_alberta$1_h=no
+		AC_MSG_ERROR([Header file "alberta.h" not found])])
+	CPPFLAGS="$ac_alberta_save_CPPFLAGS"
+	])
+	if test $ac_cv_header_alberta$1_h = yes; then
+		AC_DEFINE([HAVE_ALBERTA$1_H], 1,
+			[Define if "alberta.h" works with DIM_OF_WORLD=$1.])
+	fi
+])
+
+dnl
+dnl Old-style, DIM _and_ DIM_OF_WORLD is fixed.
+dnl
+dnl DIM is passed in $1
+dnl DIM_OF_WORLD is passed in $2
+dnl 
+AC_DEFUN([ALBERTA_CHECK_OLDLIBS],
+[
+if test "${EL_INDEX}" = "0"; then
+	ALBERTA_LIB_$1$2=ALBERTA$1$2_${ALBERTA_DEBUG}
+	ALBERTA_LIB_$1$2_C=ac_cv_lib_ALBERTA$1$2_${ALBERTA_DEBUG}
+else
+	ALBERTA_LIB_$1$2=ALBERTA$1$2_${ALBERTA_DEBUG}${EL_INDEX}
+	ALBERTA_LIB_$1$2_C=ac_cv_lib_ALBERTA$1$2_${ALBERTA_DEBUG}${EL_INDEX}
+fi
+#
+AC_CACHE_CHECK([for additional libraries needed to link],
+	[ac_cv_libalberta$1$2_gfxlibs],
+	[ac_cv_libalberta$1$2_gfxlibs=unset
+	for GFX_LIBS in	"" \
+			"$OPENGL_LIB ${X_LIBS} -lX11" \
+			"$GLTOOLS_LIB $OPENGL_LIB ${X_LIBS} -lX11" \
+			"$PLOT_LIB $OPENGL_LIB ${X_LIBS} -lX11" \
+			"$GLTOOLS_LIB $PLOT_LIB $OPENGL_LIB ${X_LIBS} -lX11"
+	do
+	  eval "unset ${ALBERTA_LIB_$1$2_C}___main"
+	  AC_CHECK_LIB($ALBERTA_LIB_$1$2, main,
+	  [ac_cv_libalberta$1$2_gfxlibs="$GFX_LIBS"
+	  break],,
+	  [$CSOLVER_ALL_LIB $GFX_LIBS])
+	done])
+
+if test "$ac_cv_libalberta$1$2_gfxlibs" = unset; then
+    AC_MSG_ERROR([Unable to link a program with lib$ALBERTA_LIB_$1$2!])
+else
+    ALBERTA_LIBS_$1$2="-L$ALBERTA_LIB_PATH -l$ALBERTA_LIB_$1$2 $CSOLVER_ALL_LIB $ac_cv_libalberta$1$2_gfxlibs"
+fi
+AC_SUBST([ALBERTA_LIBS_$1$2])
+dnl
+dnl search for alberta.h header
+dnl
+AC_CACHE_CHECK(
+	[whether alberta.h exist and works with DIM=$1, DIM_OF_WORLD=$2],
+	[ac_cv_header_alberta$1$2_h],
+	[ac_alberta_save_CPPFLAGS="$CPPFLAGS"
+	unset ac_cv_header_alberta_h
+	CPPFLAGS="-DDIM=$1 -DDIM_OF_WORLD=$2 -DEL_INDEX=${EL_INDEX} -I$ALBERTA_INCLUDE_PATH $CPPFLAGS"
+	AC_CHECK_HEADERS(alberta.h,
+		[unset ac_cv_header_alberta_h
+		ac_cv_header_alberta$1$2_h=yes],
+		[ac_cv_header_alberta$1$2_h=no
+		AC_MSG_ERROR([Header file "alberta.h" not found])])
+	CPPFLAGS="$ac_alberta_save_CPPFLAGS"
+	])
+	if test $ac_cv_header_alberta$1$2_h = yes; then
+		AC_DEFINE([HAVE_ALBERTA$1$2_H], 1,
+			[Define if "alberta.h" works with DIM=$1 and DIM_OF_WORLD=$2.])
+	fi
+])
+
 dnl
 dnl Define this outside ALBERTA_CHECK() so that it can be AC_REQUIRE'd
 dnl
@@ -23,33 +179,6 @@ dnl
 AC_DEFUN([ALBERTA_AUX_CHECK],
 [AC_REQUIRE([AC_PATH_X])
 AC_REQUIRE([AC_PATH_XTRA])
-ALBERTA_CHECK_PACKAGE(OpenGL, GL, ${x_libraries}, ${X_LIBS} -lX11,
-                     gl.h, ${x_includes}/GL , optional)
-ALBERTA_CHECK_PACKAGE(PLOT, PLOTansi, $ALBERTA_LIB_PATH, $OpenGL_LIB,
-                     PLOTansi.h, $ALBERTA_INCLUDE_PATH, optional)
-ALBERTA_CHECK_PACKAGE(gltools,  gltools,, $OpenGL_LIB,
-                     glwin.h,, optional)
-AC_LANG_PUSH(Fortran 77)
-AC_CHECK_LIB(blas, dnrm2,
-             [FLIBS="-lblas ${FLIBS}"
-             AC_DEFINE(HAVE_LIBBLAS, 1, [Define to 1 if you have libblas])],
-             [AC_MSG_ERROR([Required BLAS library was not found])])
-AC_LANG_POP(Fortran 77)
-ALBERTA_CHECK_PACKAGE(alberta_util, alberta_util, $ALBERTA_LIB_PATH, -lm,
-                     alberta_util.h, $ALBERTA_INCLUDE_PATH, required)
-ALBERTA_CHECK_PACKAGE(csolver, csolver, $ALBERTA_LIB_PATH,
-                     ${FLIBS} -lalberta_util -lm,
-                     oem.h, $ALBERTA_INCLUDE_PATH, required)
-])
-
-dnl
-dnl Check for ALBERTA libraries at given dimensions, taking EL_INDEX and DEBUG
-dnl into account. $1 is dimension, $2 is DIM_OF_WORLD.
-dnl
-AC_DEFUN([ALBERTA_CHECK],
-[AC_REQUIRE([ALBERTA_TYPE_SIZES])
-AC_REQUIRE([ALBERTA_OPTIONS])
-AC_REQUIRE([AC_SET_PREFIX])
 dnl
 dnl library location
 dnl
@@ -87,55 +216,27 @@ esac],
 fi])
 AC_SUBST(ALBERTA_INCLUDE_PATH)
 dnl
-dnl Now check for the library. Take into account that we might need
-dnl gltools and PLOTansi
-dnl
-AC_REQUIRE([ALBERTA_AUX_CHECK])
+dnl Now check for the libraries ALBERTA might depend on. Take into
+dnl account that we might need gltools and PLOTansi and OpenGL
 dnl
-dnl Now check for libALBERTA_XXX itself
-dnl
-ALBERTA_LIB_$1=ALBERTA$1_${ALBERTA_DEBUG}${EL_INDEX}
-ALBERTA_LIB_$1_C=ac_cv_lib_ALBERTA$1_${ALBERTA_DEBUG}${EL_INDEX}
-AC_CACHE_CHECK([for additional libraries needed to link],
-	[ac_cv_libalberta$1_gfxlibs],
-	[ac_cv_libalberta$1_gfxlibs=unset
-	for GFX_LIBS in	"" \
-			"$OpenGL_LIB ${X_LIBS} -lX11" \
-			"$gltools_LIB $OpenGL_LIB ${X_LIBS} -lX11" \
-			"$PLOT_LIB $OpenGL_LIB ${X_LIBS} -lX11" \
-			"$gltools_LIB $PLOT_LIB $OpenGL_LIB ${X_LIBS} -lX11"
-	do
-	  eval "unset ${ALBERTA_LIB_$1_C}___main"
-	  AC_CHECK_LIB($ALBERTA_LIB_$1, main,
-	  [ac_cv_libalberta$1_gfxlibs="$GFX_LIBS"
-	  break],,
-	  [$csolver_LIB $GFX_LIBS])
-	done])
-
-if test "$ac_cv_libalberta$1_gfxlibs" = unset; then
-	AC_MSG_ERROR([Unable to link a program with lib$ALBERTA_LIB_$1!])
-else
-	ALBERTA_LIBS_$1="-L$ALBERTA_LIB_PATH -l$ALBERTA_LIB_$1 $csolver_LIB $ac_cv_libalberta$1_gfxlibs"
-fi
-AC_SUBST([ALBERTA_LIBS_$1])
-dnl
-dnl search for alberta.h header
-dnl
-AC_CACHE_CHECK(
-	[whether alberta.h exist and works with DIM_OF_WORLD=$2],
-	[ac_cv_header_alberta$2_h],
-	[ac_alberta_save_CPPFLAGS="$CPPFLAGS"
-	unset ac_cv_header_alberta_h
-	CPPFLAGS="-DDIM_OF_WORLD=$2 -DEL_INDEX=${EL_INDEX} -I$ALBERTA_INCLUDE_PATH $CPPFLAGS"
-	AC_CHECK_HEADERS(alberta.h,
-		[unset ac_cv_header_alberta_h
-		ac_cv_header_alberta$2_h=yes],
-		[ac_cv_header_alberta$2_h=no
-		AC_MSG_ERROR([Header file "alberta.h" not found])])
-	CPPFLAGS="$ac_alberta_save_CPPFLAGS"
-	])
-	if test $ac_cv_header_alberta$2_h = yes; then
-		AC_DEFINE([HAVE_ALBERTA$2_H], 1,
-			[Define if "alberta.h" works with DIM_OF_WORLD=$2.])
-	fi
+ALBERTA_CHECK_PACKAGE(OpenGL, GL, ${x_libraries}, ${X_LIBS} -lX11,
+                     gl.h, ${x_includes}/GL ,, optional)
+ALBERTA_CHECK_PACKAGE(PLOT, PLOTansi, $ALBERTA_LIB_PATH, $OPENGL_LIB,
+                     PLOTansi.h, $ALBERTA_INCLUDE_PATH,, optional)
+ALBERTA_CHECK_PACKAGE(gltools,  gltools,, $OPENGL_LIB,
+                     glwin.h,,, optional)
+AC_LANG_PUSH(Fortran 77)
+AC_CHECK_LIB(blas, dnrm2,
+             [FLIBS="-lblas ${FLIBS}"
+             AC_DEFINE(HAVE_LIBBLAS, 1, [Define to 1 if you have libblas])],
+             [AC_MSG_ERROR([Required BLAS library was not found])])
+AC_LANG_POP(Fortran 77)
+# Cache check-point
+AC_CACHE_SAVE
+ALBERTA_CHECK_PACKAGE(alberta_util, alberta_util, $ALBERTA_LIB_PATH, -lm,
+                     alberta_util.h, $ALBERTA_INCLUDE_PATH,, required)
+ALBERTA_CHECK_PACKAGE(csolver, csolver, $ALBERTA_LIB_PATH,
+                     ${FLIBS} -lalberta_util -lm,
+                     oem.h, $ALBERTA_INCLUDE_PATH,, required)
 ])
+