diff --git a/m4/albert-check.m4 b/m4/albert-check.m4
new file mode 100644
index 0000000000000000000000000000000000000000..fca646084c1366e02ab350cd05299b141cfd70c9
--- /dev/null
+++ b/m4/albert-check.m4
@@ -0,0 +1,127 @@
+AC_DEFUN([ALBERT_OPTIONS],
+[
+AC_ARG_ENABLE(el_index,
+[  --enable-el_index       use an EL_INDEX enabled version of the ALBERT
+                            libraries (default is off)],
+[ELINDEX=1],
+ELINDEX=)
+dnl
+AC_ARG_ENABLE(debug,
+[  --enable-debug          use debug-enabled ALBERT libraries (default: off)],
+[ALBERT_DEBUG=1],
+ALBERT_DEBUG=0)
+])
+dnl
+dnl Check for ALBERT libraries at given dimensions, taking ELINDEX and DEBUG
+dnl into account. $1 is DIM, $2 ist DIM_OF_WORLD
+dnl
+AC_DEFUN([ALBERT_CHECK],
+[AC_REQUIRE([ALBERT_OPTIONS])
+AC_REQUIRE([AC_SET_PREFIX])
+dnl
+dnl library location
+dnl
+AC_ARG_WITH(albert-libs,
+[  --with-albert-libs=LOCATION  use ALBERT libraries installed below LOCATION.
+                          The library is expected under "LOCATION/".
+                          Default is the value of the environment variable
+                          ALBERT_LIB_PATH, if set, otherwise 'PREFIX/lib'],
+[case "$withval" in
+        yes|no)
+                ;;
+        *)      ALBERT_LIB_PATH=${withval}
+                ;;
+esac],
+[if test "x$ALBERT_LIB_PATH" = "x" ; then
+        ALBERT_LIB_PATH=`eval eval echo ${libdir}`
+fi])
+AC_SUBST(ALBERT_LIB_PATH)
+dnl
+dnl next for headers
+dnl
+AC_ARG_WITH(albert-includes,
+[  --with-albert-includes=LOCATION  use ALBERT includes installed below
+                          LOCATION. Default is the value of the environment
+                          variable ALBERT_INCLUDE_PATH, if set, otherwise
+                          'PREFIX/include'],
+[case "$withval" in
+        yes|no)
+                ;;
+        *)      ALBERT_INCLUDE_PATH=${withval}
+                ;;
+esac],
+[if test "x$ALBERT_INCLUDE_PATH" = "x" ; then
+        ALBERT_INCLUDE_PATH=`eval eval echo ${includedir}`
+fi])
+AC_SUBST(ALBERT_INCLUDE_PATH)
+dnl
+dnl Now check for the library. Take into account that we might need
+dnl gltools and PLOTansi
+dnl
+if test "x$_ALBERT_AUX_LIBS_CHECKED_" = "x" ; then
+  AC_CHECK_PKG(OpenGL, GL, /usr/X11R6/lib, ${X_LIBS} -lX11,
+               gl.h, /usr/X11R6/include/GL, optional)
+  AC_CHECK_PKG(PLOT, PLOTansi, $ALBERT_LIB_PATH, $OpenGL_LIB,
+               PLOTansi.h, $ALBERT_INCLUDE_PATH, optional)
+  AC_CHECK_PKG(gltools,  gltools, `pwd`/../gltools-2-4, $OpenGL_LIB,
+               glwin.h,`pwd`/../gltools-2-4, 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)
+  AC_CHECK_PKG(albert_util, albert_util, $ALBERT_LIB_PATH, -lm,
+               albert_util.h, $ALBERT_INCLUDE_PATH, required)
+  AC_CHECK_PKG(csolver, csolver, $ALBERT_LIB_PATH, ${FLIBS} -lalbert_util -lm,
+               oem.h, $ALBERT_INCLUDE_PATH, required)
+  _ALBERT_AUX_LIBS_CHECKED_=checked
+fi
+dnl
+dnl Now check for libALBERT_XXX itself
+dnl
+ALBERT_LIB_$1$2=ALBERT$1$2_${ALBERT_DEBUG}${ELINDEX}
+ALBERT_LIB_$1$2_C=ac_cv_lib_ALBERT$1$2_${ALBERT_DEBUG}${ELINDEX}
+ALBERT_GFX_LIBS_$1$2=""
+AC_CHECK_LIB($ALBERT_LIB_$1$2, main,
+             [ALBERT_LIBS_$1$2="-L$ALBERT_LIB_PATH -l$ALBERT_LIB_$2$2 $csolver_LIB"],,
+             $csolver_LIB)
+if test "x$ALBERT_LIBS_$1$2" = "x" ; then
+  if test "x$OpenGL_LIB" = "x" ; then :; else
+    AC_MSG_NOTICE([Trying again with OpenGL])
+    ALBERT_GFX_LIBS_$1$2="$OpenGL_LIB ${X_LIB} -lX11"
+    eval "unset ${ALBERT_LIB_$1$2_C}___main"
+    AC_CHECK_LIB($ALBERT_LIB_$1$2, main,
+	         [ALBERT_LIBS_$1$2="-L$ALBERT_LIB_PATH -l$ALBERT_LIB_$1$2 $csolver_LIB"],,
+	         $csolver_LIB $ALBERT_GFX_LIBS_$1$2)
+    if test "x$ALBERT_LIBS_$1$2" = "x" && \
+       test "x$gltools_LIB" != "x" ; then
+      AC_MSG_NOTICE([Trying again with gltools])
+      eval "unset ${ALBERT_LIB_$1$2_C}___main"
+      ALBERT_GFX_LIBS_$1$2="$gltools_LIB $OpenGL_LIB ${X_LIB} -lX11"	
+      AC_CHECK_LIB($ALBERT_LIB_$1$2, main,
+	          [ALBERT_LIBS_$1$2="-L$ALBERT_LIB_PATH -l$ALBERT_LIB_$1 $csolver_LIB"],,
+	           $csolver_LIB $ALBERT_GFX_LIBS_$1$2)
+    fi
+    if test "x$ALBERT_LIBS_$1$2" = "x" && \
+       test "x$PLOT_LIB" != "x" ; then
+      AC_MSG_NOTICE([Trying again with PLOTansi])
+      eval "unset ${ALBERT_LIB_$1$2_C}___main"
+      ALBERT_GFX_LIBS_$1$2="$PLOT_LIB $OpenGL_LIB ${X_LIB} -lX11"	
+      AC_CHECK_LIB($ALBERT_LIB_$1$2, main,
+	          [ALBERT_LIBS_$1$2="-L$ALBERT_LIB_PATH -l$ALBERT_LIB_$1 $csolver_LIB"],,
+	           $csolver_LIB $ALBERT_GFX_LIBS_$1$2)
+    fi
+    if test "x$ALBERT_LIBS_$1$2" = "x" && \
+       test "x$PLOT_LIB" != "x" && \
+       test "x$gltools_LIB" != "x" ; then
+      AC_MSG_NOTICE([Trying again with PLOTansi AND gltools])
+      eval "unset ${ALBERT_LIB_$1$2_C}___main"
+      ALBERT_GFX_LIBS_$1$2="$gltools_LIB $PLOT_LIB $OpenGL_LIB ${X_LIB} -lX11"
+      AC_CHECK_LIB($ALBERT_LIB_$1$2, main,
+		  [ALBERT_LIBS_$1$2="-L$ALBERT_LIB_PATH -l$ALBERT_LIB_$1 $csolver_LIB"],,
+	           $csolver_LIB $ALBERT_GFX_LIBS_$1$2)
+    fi
+  fi
+fi
+])
diff --git a/m4/check-package.m4 b/m4/check-package.m4
new file mode 100644
index 0000000000000000000000000000000000000000..c22735c401544e0119a726b0d8753bedc600fd19
--- /dev/null
+++ b/m4/check-package.m4
@@ -0,0 +1,72 @@
+dnl
+dnl Check for a library + header files
+dnl 
+AC_DEFUN(AC_CHECK_PKG,
+[AC_ARG_WITH($1-lib,
+[  --with-$1-lib=DIR   use $1 library below directory DIR (default: $3)],
+[case "$withval" in
+    yes) AC_MSG_ERROR("option \"--with-$1-lib\" requires an argument")
+	;;
+    no) AC_MSG_ERROR("option \"--with-$1-lib\" requires an argument")
+	;;
+    *) $1_DIR=$withval
+	;;
+esac],
+$1_DIR=$3)
+AC_ARG_WITH($1-headers,
+[  --with-$1-headers=DIR   use $1 include files below directory DIR
+                          (default: $6)],
+[case "$withval" in
+    yes) AC_MSG_ERROR("option \"--with-$1-headers\" requires an argument")
+	;;
+    no) AC_MSG_ERROR("option \"--with-$1-headers\" requires an argument")
+	;;
+    *) $1_INCS=$withval
+	;;
+esac],
+$1_INCLUDES=$6)
+dnl
+dnl now check if the library and header files exist
+dnl
+if test "$7" = "optional" ; then
+  AC_CHECK_LIB($2, main,
+    [$1_LIB="-L$$1_DIR -l$2"],
+    [$1_LIB=""
+     $1_DIR=""
+     $1_INCLUDES=""],
+    -L$$1_DIR $4)
+else
+  AC_CHECK_LIB($2, main,
+    [$1_LIB="-L$$1_DIR -l$2 $4"],
+    [AC_MSG_ERROR([Library "lib$2" was not found])],
+    -L$$1_DIR $4)
+fi
+if test "x$$1_LIB" = "x" ; then
+	:
+else
+  dnl
+  dnl  check for the header file
+  dnl
+  ac_$1_save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="-I$$1_INCLUDES $CPPFLAGS"
+  if test "$7" = "optional" ; then
+    AC_CHECK_HEADERS($5,, [$1_LIB=""
+                           $1_DIR=""
+                           $1_INCLUDES=""])
+  else
+    AC_CHECK_HEADERS($5,, AC_MSG_ERROR([Header file "$5" was not found]))
+  fi
+  CPPCLAGS="$ac_$1_save_CPPFLAGS"
+  dnl
+  dnl define makefile substitutions and config.h macros
+  dnl
+  if test "x$$1_LIB" = "x" ; then
+	:
+  else
+    AC_DEFINE(m4_toupper([HAVE_LIB$2]), 1, Define to 1 if you have lib$2)
+  fi
+fi
+AC_SUBST($1_INCLUDES)
+AC_SUBST($1_DIR)
+AC_SUBST($1_LIB)
+])
diff --git a/m4/set-prefix.m4 b/m4/set-prefix.m4
new file mode 100644
index 0000000000000000000000000000000000000000..6121172c551303cff4df9268f1d74ac513dbf0a0
--- /dev/null
+++ b/m4/set-prefix.m4
@@ -0,0 +1,7 @@
+dnl set prefix to its proper value, so that one can define substitutions
+dnl depending on the value of prefix
+AC_DEFUN(AC_SET_PREFIX,
+[test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+])