[Pkg-e-commits] [SCM] Enlightenment Foundation Library providing optimized data types branch, new-svn-snapshot, updated. debian/0.0.1_svn20081120-1-224-g349098b

Albin Tonnerre albin.tonnerre at gmail.com
Mon Aug 3 16:47:18 UTC 2009


The following commit has been merged in the new-svn-snapshot branch:
commit 8ed37909dca9330671d4ce94690ecf90a4cedcfe
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date:   Sun Aug 2 18:01:43 2009 +0200

    Import upstream release 0.0.2.062

diff --git a/AUTHORS b/AUTHORS
index 48ff69a..135909a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -8,5 +8,5 @@ Cedric Bail <cedric.bail at free.fr>
 Peter "pfritz" Wehrfritz <peter.wehrfritz at web.de>
 Arnaud de Turckheim "quarium" <quarium at gmail.com>
 Alexandre "diaxen" Becoulet <diaxen at free.fr>
-Albin Tonnerre <albin.tonnerre at gmail.com>
+Albin "Lutin" Tonnerre <albin.tonnerre at gmail.com>
 Andre Dieb <andre.dieb at gmail.com>
diff --git a/Makefile.am b/Makefile.am
index b906b01..5cd99ff 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,7 +26,19 @@ AUTHORS \
 COPYING \
 OLD-COPYING.PLAIN \
 README \
-$(pkgconfig_DATA)
+$(pkgconfig_DATA) \
+autogen.sh \
+eina-0.pc.in \
+eina.spec \
+eina.spec.in \
+m4/efl_benchmark.m4 \
+m4/efl_coverage.m4 \
+m4/efl_cpu.m4 \
+m4/efl_doxygen.m4 \
+m4/efl_pthread.m4 \
+m4/efl_tests.m4 \
+m4/eina_bench.m4 \
+m4/eina_check.m4
 
 .PHONY: doc coverage benchmark
 
diff --git a/Makefile.in b/Makefile.in
index 7d44757..8776c99 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -44,10 +44,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -126,6 +126,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -256,7 +257,19 @@ AUTHORS \
 COPYING \
 OLD-COPYING.PLAIN \
 README \
-$(pkgconfig_DATA)
+$(pkgconfig_DATA) \
+autogen.sh \
+eina-0.pc.in \
+eina.spec \
+eina.spec.in \
+m4/efl_benchmark.m4 \
+m4/efl_coverage.m4 \
+m4/efl_cpu.m4 \
+m4/efl_doxygen.m4 \
+m4/efl_pthread.m4 \
+m4/efl_tests.m4 \
+m4/eina_bench.m4 \
+m4/eina_check.m4
 
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/aclocal.m4 b/aclocal.m4
index 1623a6a..e2d8d1b 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1043,6 +1043,7 @@ m4_include([m4/efl_cpu.m4])
 m4_include([m4/efl_doxygen.m4])
 m4_include([m4/efl_pthread.m4])
 m4_include([m4/efl_tests.m4])
+m4_include([m4/eina_bench.m4])
 m4_include([m4/eina_check.m4])
 m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..5bbd4d9
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
+echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+
+if [ -z "$NOCONFIGURE" ]; then
+	./configure "$@"
+fi
diff --git a/config.h.in b/config.h.in
index b184962..f64f451 100644
--- a/config.h.in
+++ b/config.h.in
@@ -32,19 +32,19 @@
 /* disable safety checks for NULL pointers and like. */
 #undef EINA_SAFETY_CHECKS
 
-/* Set to 1 if chained pool is statically built */
+/* Set to 1 if yes is statically built */
 #undef EINA_STATIC_BUILD_CHAINED_POOL
 
-/* Set to 1 if ememoa fixed is statically built */
+/* Set to 1 if ${enable_ememoa} is statically built */
 #undef EINA_STATIC_BUILD_EMEMOA_FIXED
 
-/* Set to 1 if ememoa unknown is statically built */
+/* Set to 1 if ${enable_ememoa} is statically built */
 #undef EINA_STATIC_BUILD_EMEMOA_UNKNOWN
 
-/* Set to 1 if fixed bitmap is statically built */
+/* Set to 1 if yes is statically built */
 #undef EINA_STATIC_BUILD_FIXED_BITMAP
 
-/* Set to 1 if pass through is statically built */
+/* Set to 1 if yes is statically built */
 #undef EINA_STATIC_BUILD_PASS_THROUGH
 
 /* Report Eina stringshare usage pattern */
diff --git a/configure b/configure
index c9a4151..05fd86d 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for eina 0.0.2.061.
+# Generated by GNU Autoconf 2.61 for eina 0.0.2.062.
 #
 # Report bugs to <enlightenment-devel at lists.sourceforge.net>.
 #
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='eina'
 PACKAGE_TARNAME='eina'
-PACKAGE_VERSION='0.0.2.061'
-PACKAGE_STRING='eina 0.0.2.061'
+PACKAGE_VERSION='0.0.2.062'
+PACKAGE_STRING='eina 0.0.2.062'
 PACKAGE_BUGREPORT='enlightenment-devel at lists.sourceforge.net'
 
 ac_unique_file="configure.ac"
@@ -881,16 +881,8 @@ SAFETY_CHECKS_TRUE
 SAFETY_CHECKS_FALSE
 EINA_CONFIGURE_SAFETY_CHECKS
 EINA_CONFIGURE_DEFAULT_MEMPOOL
-EINA_STATIC_BUILD_CHAINED_POOL_TRUE
-EINA_STATIC_BUILD_CHAINED_POOL_FALSE
-EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE
-EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE
-EINA_STATIC_BUILD_PASS_THROUGH_TRUE
-EINA_STATIC_BUILD_PASS_THROUGH_FALSE
-EINA_STATIC_BUILD_FIXED_BITMAP_TRUE
-EINA_STATIC_BUILD_FIXED_BITMAP_FALSE
+EINA_ENABLE_BENCHMARK_E17_TRUE
+EINA_ENABLE_BENCHMARK_E17_FALSE
 PKG_CONFIG
 efl_have_doxygen
 efl_doxygen
@@ -898,29 +890,36 @@ EFL_BUILD_DOC_TRUE
 EFL_BUILD_DOC_FALSE
 EVIL_CFLAGS
 EVIL_LIBS
-GLIB_CFLAGS
-GLIB_LIBS
-EINA_HAVE_GLIB_TRUE
-EINA_HAVE_GLIB_FALSE
-EVAS_CFLAGS
-EVAS_LIBS
-EINA_HAVE_EVAS_TRUE
-EINA_HAVE_EVAS_FALSE
-ECORE_CFLAGS
-ECORE_LIBS
-EINA_HAVE_ECORE_TRUE
-EINA_HAVE_ECORE_FALSE
-EINA_ENABLE_BENCHMARK_E17_TRUE
-EINA_ENABLE_BENCHMARK_E17_FALSE
 EMEMOA_CFLAGS
 EMEMOA_LIBS
 EINA_ENABLE_EMEMOA_TRUE
 EINA_ENABLE_EMEMOA_FALSE
+EINA_CPPFLAGS
 EINA_CFLAGS
 EINA_LIBS
 lt_enable_auto_import
 ALLOCA
 dlopen_libs
+EINA_BUILD_CHAINED_POOL_TRUE
+EINA_BUILD_CHAINED_POOL_FALSE
+EINA_STATIC_BUILD_CHAINED_POOL_TRUE
+EINA_STATIC_BUILD_CHAINED_POOL_FALSE
+EINA_BUILD_EMEMOA_FIXED_TRUE
+EINA_BUILD_EMEMOA_FIXED_FALSE
+EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE
+EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE
+EINA_BUILD_EMEMOA_UNKNOWN_TRUE
+EINA_BUILD_EMEMOA_UNKNOWN_FALSE
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE
+EINA_BUILD_FIXED_BITMAP_TRUE
+EINA_BUILD_FIXED_BITMAP_FALSE
+EINA_STATIC_BUILD_FIXED_BITMAP_TRUE
+EINA_STATIC_BUILD_FIXED_BITMAP_FALSE
+EINA_BUILD_PASS_THROUGH_TRUE
+EINA_BUILD_PASS_THROUGH_FALSE
+EINA_STATIC_BUILD_PASS_THROUGH_TRUE
+EINA_STATIC_BUILD_PASS_THROUGH_FALSE
 CHECK_CFLAGS
 CHECK_LIBS
 EFL_ENABLE_TESTS_TRUE
@@ -932,6 +931,18 @@ EFL_ENABLE_COVERAGE_TRUE
 EFL_ENABLE_COVERAGE_FALSE
 EFL_ENABLE_BENCHMARK_TRUE
 EFL_ENABLE_BENCHMARK_FALSE
+EVAS_CFLAGS
+EVAS_LIBS
+EINA_HAVE_EVAS_TRUE
+EINA_HAVE_EVAS_FALSE
+ECORE_CFLAGS
+ECORE_LIBS
+EINA_HAVE_ECORE_TRUE
+EINA_HAVE_ECORE_FALSE
+GLIB_CFLAGS
+GLIB_LIBS
+EINA_HAVE_GLIB_TRUE
+EINA_HAVE_GLIB_FALSE
 LIBOBJS
 LTLIBOBJS'
 ac_subst_files=''
@@ -947,16 +958,16 @@ CPP
 PKG_CONFIG
 EVIL_CFLAGS
 EVIL_LIBS
-GLIB_CFLAGS
-GLIB_LIBS
+EMEMOA_CFLAGS
+EMEMOA_LIBS
+CHECK_CFLAGS
+CHECK_LIBS
 EVAS_CFLAGS
 EVAS_LIBS
 ECORE_CFLAGS
 ECORE_LIBS
-EMEMOA_CFLAGS
-EMEMOA_LIBS
-CHECK_CFLAGS
-CHECK_LIBS'
+GLIB_CFLAGS
+GLIB_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1459,7 +1470,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures eina 0.0.2.061 to adapt to many kinds of systems.
+\`configure' configures eina 0.0.2.062 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1529,7 +1540,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of eina 0.0.2.061:";;
+     short | recursive ) echo "Configuration of eina 0.0.2.062:";;
    esac
   cat <<\_ACEOF
 
@@ -1543,10 +1554,10 @@ Optional Features:
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-cpu-mmx        enable mmx code [default=yes]
-  --enable-cpu-sse        enable sse code [default=yes]
-  --enable-cpu-sse2       enable sse2 code [default=yes]
-  --enable-cpu-altivec    enable altivec code [default=yes]
+  --disable-cpu-mmx       disable mmx code [default=enabled]
+  --disable-cpu-sse       disable sse code [default=enabled]
+  --disable-cpu-sse2      disable sse2 code [default=enabled]
+  --disable-cpu-altivec   disable altivec code [default=enabled]
   --disable-pthread       enable POSIX threads code [default=no]
   --disable-magic-debug   disable magic debug of eina structure
                           [default=enabled]
@@ -1558,24 +1569,25 @@ Optional Features:
   --enable-stringshare-usage
                           Report stringshare usage on stringshare shutdown.
                           [default=disabled]
-  --enable-ememoa         build ememoa memory pool module [default=yes]
-  --enable-static-chained-pool
-                          enable static build of chained pool [default=no]
-  --enable-static-ememoa-fixed
-                          enable static build of ememoa fixed [default=no]
-  --enable-static-ememoa-unknown
-                          enable static build of ememoa unknown [default=no]
-  --enable-static-pass-through
-                          enable static build of pass through [default=no]
-  --enable-static-fixed-bitmap
-                          enable static build of fixed bitmap [default=no]
-  --disable-doc           Disable documentation build [default=enabled]
   --enable-e17            enable heavy benchmark [default=no]
+  --disable-doc           Disable documentation build [default=enabled]
+  --enable-ememoa         build ememoa memory pool module [default=yes]
   --disable-assert        turn off assertions
-  --enable-tests          enable tests [default=no]
-  --enable-coverage       compile with coverage profiling instrumentation
-                          [default=no]
-  --enable-benchmark      enable tests [default=no]
+  --enable-chained-pool   enable build of chained pool [default=yes]
+  --enable-ememoa-fixed   enable build of ememoa fixed [default=yes]
+  --enable-ememoa-unknown enable build of ememoa unknown [default=yes]
+  --enable-fixed-bitmap   enable build of fixed bitmap [default=yes]
+  --enable-pass-through   enable build of pass through [default=yes]
+  --enable-tests          enable tests [default=disabled]
+  --enable-coverage       enable coverage profiling instrumentation
+                          [default=disabled]
+  --enable-benchmark      enable benchmarking [default=disabled]
+  --disable-benchmark-evas
+                          disable benchmarking against evas [default=yes]
+  --disable-benchmark-ecore
+                          disable benchmarking against ecore [default=yes]
+  --disable-benchmark-glib
+                          disable benchmarking against glib [default=yes]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1597,19 +1609,19 @@ Some influential environment variables:
   PKG_CONFIG  path to pkg-config utility
   EVIL_CFLAGS C compiler flags for EVIL, overriding pkg-config
   EVIL_LIBS   linker flags for EVIL, overriding pkg-config
-  GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
-  GLIB_LIBS   linker flags for GLIB, overriding pkg-config
-  EVAS_CFLAGS C compiler flags for EVAS, overriding pkg-config
-  EVAS_LIBS   linker flags for EVAS, overriding pkg-config
-  ECORE_CFLAGS
-              C compiler flags for ECORE, overriding pkg-config
-  ECORE_LIBS  linker flags for ECORE, overriding pkg-config
   EMEMOA_CFLAGS
               C compiler flags for EMEMOA, overriding pkg-config
   EMEMOA_LIBS linker flags for EMEMOA, overriding pkg-config
   CHECK_CFLAGS
               C compiler flags for CHECK, overriding pkg-config
   CHECK_LIBS  linker flags for CHECK, overriding pkg-config
+  EVAS_CFLAGS C compiler flags for EVAS, overriding pkg-config
+  EVAS_LIBS   linker flags for EVAS, overriding pkg-config
+  ECORE_CFLAGS
+              C compiler flags for ECORE, overriding pkg-config
+  ECORE_LIBS  linker flags for ECORE, overriding pkg-config
+  GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
+  GLIB_LIBS   linker flags for GLIB, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1675,7 +1687,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-eina configure 0.0.2.061
+eina configure 0.0.2.062
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1689,7 +1701,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by eina $as_me 0.0.2.061, which was
+It was created by eina $as_me 0.0.2.062, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -3531,7 +3543,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='eina'
- VERSION='0.0.2.061'
+ VERSION='0.0.2.062'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4781,13 +4793,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:4784: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:4796: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4787: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:4799: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4790: output\"" >&5)
+  (eval echo "\"\$as_me:4802: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -5897,7 +5909,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5900 "configure"' > conftest.$ac_ext
+  echo '#line 5912 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7746,11 +7758,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7749: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7761: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7753: \$? = $ac_status" >&5
+   echo "$as_me:7765: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8070,11 +8082,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8073: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8085: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8077: \$? = $ac_status" >&5
+   echo "$as_me:8089: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -8175,11 +8187,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8178: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8190: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8182: \$? = $ac_status" >&5
+   echo "$as_me:8194: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8230,11 +8242,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8233: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8245: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8237: \$? = $ac_status" >&5
+   echo "$as_me:8249: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10991,7 +11003,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10994 "configure"
+#line 11006 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11091,7 +11103,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11094 "configure"
+#line 11106 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11334,7 +11346,7 @@ version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
 
 ### Needed information
 
-release="ver-svn-02"
+release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -11354,7 +11366,6 @@ _ACEOF
 
 
 
-
 # Check whether --enable-cpu-mmx was given.
 if test "${enable_cpu_mmx+set}" = set; then
   enableval=$enable_cpu_mmx;
@@ -11366,9 +11377,9 @@ if test "${enable_cpu_mmx+set}" = set; then
 
 else
   _efl_enable_cpu_mmx="yes"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether to build mmx code" >&5
 echo $ECHO_N "checking whether to build mmx code... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${_efl_enable_cpu_mmx}" >&5
@@ -11377,27 +11388,30 @@ echo "${ECHO_T}${_efl_enable_cpu_mmx}" >&6; }
 
 _efl_build_cpu_mmx="no"
 if test "x${_efl_enable_cpu_mmx}" = "xyes" ; then
-case $host_cpu in
-  i*86)
-    _efl_build_cpu_mmx="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_mmx="yes"
-    ;;
-esac
+   case $host_cpu in
+      i*86 | x86_64)
+         _efl_build_cpu_mmx="yes"
+         ;;
+   esac
 fi
 
+{ echo "$as_me:$LINENO: checking whether mmx instructions set is available" >&5
+echo $ECHO_N "checking whether mmx instructions set is available... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_mmx}" >&5
+echo "${ECHO_T}${_efl_build_cpu_mmx}" >&6; }
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-mmmx"
-ac_ext=c
+
+if test "x${_efl_build_cpu_mmx}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-mmmx"
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-cat >conftest.$ac_ext <<_ACEOF
+   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11430,24 +11444,31 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -mmmx"
 
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -mmmx"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	have_linker_option="no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-ac_ext=c
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CFLAGS=${SAVE_CFLAGS}
+   CFLAGS=${SAVE_CFLAGS}
+
+   { echo "$as_me:$LINENO: checking whether mmx linker option is supported" >&5
+echo $ECHO_N "checking whether mmx linker option is supported... $ECHO_C" >&6; }
+   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+echo "${ECHO_T}${have_linker_option}" >&6; }
+fi
 
 
 
@@ -11467,7 +11488,6 @@ fi
 
 
 
-
 # Check whether --enable-cpu-sse was given.
 if test "${enable_cpu_sse+set}" = set; then
   enableval=$enable_cpu_sse;
@@ -11479,9 +11499,9 @@ if test "${enable_cpu_sse+set}" = set; then
 
 else
   _efl_enable_cpu_sse="yes"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether to build sse code" >&5
 echo $ECHO_N "checking whether to build sse code... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse}" >&5
@@ -11490,27 +11510,30 @@ echo "${ECHO_T}${_efl_enable_cpu_sse}" >&6; }
 
 _efl_build_cpu_sse="no"
 if test "x${_efl_enable_cpu_sse}" = "xyes" ; then
-case $host_cpu in
-  i*86)
-    _efl_build_cpu_sse="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_sse="yes"
-    ;;
-esac
+   case $host_cpu in
+      i*86 | x86_64)
+         _efl_build_cpu_sse="yes"
+         ;;
+   esac
 fi
 
+{ echo "$as_me:$LINENO: checking whether sse instructions set is available" >&5
+echo $ECHO_N "checking whether sse instructions set is available... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse}" >&5
+echo "${ECHO_T}${_efl_build_cpu_sse}" >&6; }
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-msse"
-ac_ext=c
+
+if test "x${_efl_build_cpu_sse}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-msse"
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-cat >conftest.$ac_ext <<_ACEOF
+   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11543,24 +11566,32 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse"
+
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse"
 
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	have_linker_option="no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-ac_ext=c
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CFLAGS=${SAVE_CFLAGS}
+   CFLAGS=${SAVE_CFLAGS}
+
+   { echo "$as_me:$LINENO: checking whether sse linker option is supported" >&5
+echo $ECHO_N "checking whether sse linker option is supported... $ECHO_C" >&6; }
+   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+echo "${ECHO_T}${have_linker_option}" >&6; }
+fi
 
 
 
@@ -11592,9 +11623,9 @@ if test "${enable_cpu_sse2+set}" = set; then
 
 else
   _efl_enable_cpu_sse2="yes"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether to build sse2 code" >&5
 echo $ECHO_N "checking whether to build sse2 code... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${_efl_enable_cpu_sse2}" >&5
@@ -11603,27 +11634,30 @@ echo "${ECHO_T}${_efl_enable_cpu_sse2}" >&6; }
 
 _efl_build_cpu_sse2="no"
 if test "x${_efl_enable_cpu_sse2}" = "xyes" ; then
-case $host_cpu in
-  i686)
-    _efl_build_cpu_sse2="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_sse2="yes"
-    ;;
-esac
+   case $host_cpu in
+      i686 | x86_64)
+         _efl_build_cpu_sse2="yes"
+         ;;
+   esac
 fi
 
+{ echo "$as_me:$LINENO: checking whether sse2 instructions set is available" >&5
+echo $ECHO_N "checking whether sse2 instructions set is available... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_sse2}" >&5
+echo "${ECHO_T}${_efl_build_cpu_sse2}" >&6; }
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-msse2"
-ac_ext=c
+
+if test "x${_efl_build_cpu_sse2}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-msse2"
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-cat >conftest.$ac_ext <<_ACEOF
+   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11656,24 +11690,32 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
-  EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse2"
+
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse2"
 
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
+	have_linker_option="no"
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-ac_ext=c
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CFLAGS=${SAVE_CFLAGS}
+   CFLAGS=${SAVE_CFLAGS}
+
+   { echo "$as_me:$LINENO: checking whether sse2 linker option is supported" >&5
+echo $ECHO_N "checking whether sse2 linker option is supported... $ECHO_C" >&6; }
+   { echo "$as_me:$LINENO: result: ${have_linker_option}" >&5
+echo "${ECHO_T}${have_linker_option}" >&6; }
+fi
 
 
 
@@ -11716,24 +11758,31 @@ echo "${ECHO_T}${_efl_enable_cpu_altivec}" >&6; }
 
 _efl_build_cpu_altivec="no"
 if test "x${_efl_enable_cpu_altivec}" = "xyes" ; then
-case $host_cpu in
-  *power* | *ppc*)
-    _efl_build_cpu_altivec="yes"
-    ;;
-esac
+   case $host_cpu in
+      *power* | *ppc*)
+         _efl_build_cpu_altivec="yes"
+         ;;
+   esac
 fi
 
+{ echo "$as_me:$LINENO: checking whether altivec instructions set is available" >&5
+echo $ECHO_N "checking whether altivec instructions set is available... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${_efl_build_cpu_altivec}" >&5
+echo "${ECHO_T}${_efl_build_cpu_altivec}" >&6; }
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-faltivec"
-ac_ext=c
+
+_efl_have_faltivec="no"
+if test "x${_efl_build_cpu_altivec}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-faltivec"
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-cat >conftest.$ac_ext <<_ACEOF
+   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11768,21 +11817,20 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   _efl_have_faltivec="yes"
-    _efl_altivec_flag="-faltivec"
+       _efl_altivec_flag="-faltivec"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	_efl_have_faltivec="no"
-
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-if test "x${_efl_have_faltivec}" = "xno" ; then
-   CFLAGS="-maltivec"
+   if test "x${_efl_have_faltivec}" = "xno" ; then
+      CFLAGS="-maltivec"
 
-   cat >conftest.$ac_ext <<_ACEOF
+      cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -11817,30 +11865,30 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 	 test ! -s conftest.err
        } && test -s conftest.$ac_objext; then
   _efl_have_faltivec="yes"
-       _efl_altivec_flag="-maltivec"
+          _efl_altivec_flag="-maltivec"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	_efl_have_faltivec="no"
-
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-{ echo "$as_me:$LINENO: checking whether altivec code is supported" >&5
-echo $ECHO_N "checking whether altivec code is supported... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${_efl_have_faltivec}" >&5
-echo "${ECHO_T}${_efl_have_faltivec}" >&6; }
+   fi
 
-ac_ext=c
+   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CFLAGS=${SAVE_CFLAGS}
+   CFLAGS=${SAVE_CFLAGS}
+
+   { echo "$as_me:$LINENO: checking whether altivec linker option is supported" >&5
+echo $ECHO_N "checking whether altivec linker option is supported... $ECHO_C" >&6; }
+   { echo "$as_me:$LINENO: result: ${_efl_have_faltivec}" >&5
+echo "${ECHO_T}${_efl_have_faltivec}" >&6; }
+fi
 
 EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} ${_efl_altivec_flag}"
 
@@ -12247,236 +12295,37 @@ _ACEOF
 
 fi
 
-# Ememoa memory pool
-
-# Check whether --enable-ememoa was given.
-if test "${enable_ememoa+set}" = set; then
-  enableval=$enable_ememoa;
-    if test "x${enableval}" = "xyes" ; then
-       enable_ememoa="yes"
-    else
-       enable_ememoa="no"
-    fi
-
-else
-  enable_ememoa="yes"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether to use ememoa for memory pool" >&5
-echo $ECHO_N "checking whether to use ememoa for memory pool... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $enable_ememoa" >&5
-echo "${ECHO_T}$enable_ememoa" >&6; }
-
-# Static linking
-
-
-
-# Check whether --enable-static-chained-pool was given.
-if test "${enable_static_chained_pool+set}" = set; then
-  enableval=$enable_static_chained_pool;
-    if test "x${enableval}" = "xyes" ; then
-       enable_static_chained_pool="yes"
-    else
-       enable_static_chained_pool="no"
-    fi
-
-else
-  enable_static_chained_pool="no"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether chained pool is statically build" >&5
-echo $ECHO_N "checking whether chained pool is statically build... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_static_chained_pool}" >&5
-echo "${ECHO_T}${enable_static_chained_pool}" >&6; }
-
- if test "x${enable_static_chained_pool}" = "xyes"; then
-  EINA_STATIC_BUILD_CHAINED_POOL_TRUE=
-  EINA_STATIC_BUILD_CHAINED_POOL_FALSE='#'
-else
-  EINA_STATIC_BUILD_CHAINED_POOL_TRUE='#'
-  EINA_STATIC_BUILD_CHAINED_POOL_FALSE=
-fi
-
-
-if test "x${enable_static_chained_pool}" = "xyes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define EINA_STATIC_BUILD_CHAINED_POOL 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-# Check whether --enable-static-ememoa-fixed was given.
-if test "${enable_static_ememoa_fixed+set}" = set; then
-  enableval=$enable_static_ememoa_fixed;
-    if test "x${enableval}" = "xyes" ; then
-       enable_static_ememoa_fixed="yes"
-    else
-       enable_static_ememoa_fixed="no"
-    fi
-
-else
-  enable_static_ememoa_fixed="no"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether ememoa fixed is statically build" >&5
-echo $ECHO_N "checking whether ememoa fixed is statically build... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_static_ememoa_fixed}" >&5
-echo "${ECHO_T}${enable_static_ememoa_fixed}" >&6; }
-
- if test "x${enable_static_ememoa_fixed}" = "xyes"; then
-  EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE=
-  EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE='#'
-else
-  EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE='#'
-  EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE=
-fi
-
-
-if test "x${enable_static_ememoa_fixed}" = "xyes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define EINA_STATIC_BUILD_EMEMOA_FIXED 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-# Check whether --enable-static-ememoa-unknown was given.
-if test "${enable_static_ememoa_unknown+set}" = set; then
-  enableval=$enable_static_ememoa_unknown;
-    if test "x${enableval}" = "xyes" ; then
-       enable_static_ememoa_unknown="yes"
-    else
-       enable_static_ememoa_unknown="no"
-    fi
-
-else
-  enable_static_ememoa_unknown="no"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether ememoa unknown is statically build" >&5
-echo $ECHO_N "checking whether ememoa unknown is statically build... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_static_ememoa_unknown}" >&5
-echo "${ECHO_T}${enable_static_ememoa_unknown}" >&6; }
-
- if test "x${enable_static_ememoa_unknown}" = "xyes"; then
-  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE=
-  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE='#'
-else
-  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE='#'
-  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE=
-fi
-
-
-if test "x${enable_static_ememoa_unknown}" = "xyes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define EINA_STATIC_BUILD_EMEMOA_UNKNOWN 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-# Check whether --enable-static-pass-through was given.
-if test "${enable_static_pass_through+set}" = set; then
-  enableval=$enable_static_pass_through;
+# Check if we want to benchmark on real data
+enable_benchmark_e17="no"
+# Check whether --enable-e17 was given.
+if test "${enable_e17+set}" = set; then
+  enableval=$enable_e17;
     if test "x${enableval}" = "xyes" ; then
-       enable_static_pass_through="yes"
+       enable_benchmark_e17="yes"
     else
-       enable_static_pass_through="no"
+       enable_benchmark_e17="no"
     fi
 
 else
-  enable_static_pass_through="no"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether pass through is statically build" >&5
-echo $ECHO_N "checking whether pass through is statically build... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_static_pass_through}" >&5
-echo "${ECHO_T}${enable_static_pass_through}" >&6; }
-
- if test "x${enable_static_pass_through}" = "xyes"; then
-  EINA_STATIC_BUILD_PASS_THROUGH_TRUE=
-  EINA_STATIC_BUILD_PASS_THROUGH_FALSE='#'
-else
-  EINA_STATIC_BUILD_PASS_THROUGH_TRUE='#'
-  EINA_STATIC_BUILD_PASS_THROUGH_FALSE=
-fi
-
-
-if test "x${enable_static_pass_through}" = "xyes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define EINA_STATIC_BUILD_PASS_THROUGH 1
-_ACEOF
-
+  enable_benchmark_e17="no"
 fi
 
 
+{ echo "$as_me:$LINENO: checking whether e17 real data benchmark are built" >&5
+echo $ECHO_N "checking whether e17 real data benchmark are built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${enable_benchmark_e17}" >&5
+echo "${ECHO_T}${enable_benchmark_e17}" >&6; }
 
-
-
-
-# Check whether --enable-static-fixed-bitmap was given.
-if test "${enable_static_fixed_bitmap+set}" = set; then
-  enableval=$enable_static_fixed_bitmap;
-    if test "x${enableval}" = "xyes" ; then
-       enable_static_fixed_bitmap="yes"
-    else
-       enable_static_fixed_bitmap="no"
-    fi
-
-else
-  enable_static_fixed_bitmap="no"
-
-fi
-
-{ echo "$as_me:$LINENO: checking whether fixed bitmap is statically build" >&5
-echo $ECHO_N "checking whether fixed bitmap is statically build... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_static_fixed_bitmap}" >&5
-echo "${ECHO_T}${enable_static_fixed_bitmap}" >&6; }
-
- if test "x${enable_static_fixed_bitmap}" = "xyes"; then
-  EINA_STATIC_BUILD_FIXED_BITMAP_TRUE=
-  EINA_STATIC_BUILD_FIXED_BITMAP_FALSE='#'
+ if test "x${enable_benchmark_e17}" = "xyes"; then
+  EINA_ENABLE_BENCHMARK_E17_TRUE=
+  EINA_ENABLE_BENCHMARK_E17_FALSE='#'
 else
-  EINA_STATIC_BUILD_FIXED_BITMAP_TRUE='#'
-  EINA_STATIC_BUILD_FIXED_BITMAP_FALSE=
-fi
-
-
-if test "x${enable_static_fixed_bitmap}" = "xyes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define EINA_STATIC_BUILD_FIXED_BITMAP 1
-_ACEOF
-
+  EINA_ENABLE_BENCHMARK_E17_TRUE='#'
+  EINA_ENABLE_BENCHMARK_E17_FALSE=
 fi
 
 
 
-
-
-
 ### Checks for programs
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -13308,7 +13157,8 @@ if test "x${efl_enable_doc}" = "xyes" ; then
 
 # Check whether --with-doxygen was given.
 if test "${with_doxygen+set}" = set; then
-  withval=$with_doxygen;       efl_doxygen=${withval}
+  withval=$with_doxygen;
+      efl_doxygen=${withval}
        # Extract the first word of "${efl_doxygen}", so it can be a program name with args.
 set dummy ${efl_doxygen}; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -13562,300 +13412,26 @@ _ACEOF
    ;;
 esac
 
-# Glib library for comparison in the benchmark
-
-have_glib="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-
-pkg_failed=no
-{ echo "$as_me:$LINENO: checking for GLIB" >&5
-echo $ECHO_N "checking for GLIB... $ECHO_C" >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GLIB_CFLAGS"; then
-        pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GLIB_LIBS"; then
-        pkg_cv_GLIB_LIBS="$GLIB_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    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
-	        GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0"`
-        else
-	        GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GLIB_PKG_ERRORS" >&5
-
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-                have_glib="no"
-
-elif test $pkg_failed = untried; then
-	have_glib="no"
-
-else
-	GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
-	GLIB_LIBS=$pkg_cv_GLIB_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_glib="yes"
-fi
-fi
-
- if test "x${have_glib}" = "xyes"; then
-  EINA_HAVE_GLIB_TRUE=
-  EINA_HAVE_GLIB_FALSE='#'
-else
-  EINA_HAVE_GLIB_TRUE='#'
-  EINA_HAVE_GLIB_FALSE=
-fi
-
-
-# Evas library for comparison in the benchmark
-
-have_evas="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-
-pkg_failed=no
-{ echo "$as_me:$LINENO: checking for EVAS" >&5
-echo $ECHO_N "checking for EVAS... $ECHO_C" >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$EVAS_CFLAGS"; then
-        pkg_cv_EVAS_CFLAGS="$EVAS_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
-  ($PKG_CONFIG --exists --print-errors "evas") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_EVAS_CFLAGS=`$PKG_CONFIG --cflags "evas" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$EVAS_LIBS"; then
-        pkg_cv_EVAS_LIBS="$EVAS_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
-  ($PKG_CONFIG --exists --print-errors "evas") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_EVAS_LIBS=`$PKG_CONFIG --libs "evas" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    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
-	        EVAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evas"`
-        else
-	        EVAS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evas"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$EVAS_PKG_ERRORS" >&5
-
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-                have_evas="no"
-
-elif test $pkg_failed = untried; then
-	have_evas="no"
-
-else
-	EVAS_CFLAGS=$pkg_cv_EVAS_CFLAGS
-	EVAS_LIBS=$pkg_cv_EVAS_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_evas="yes"
-fi
-fi
-
- if test "x${have_evas}" = "xyes"; then
-  EINA_HAVE_EVAS_TRUE=
-  EINA_HAVE_EVAS_FALSE='#'
-else
-  EINA_HAVE_EVAS_TRUE='#'
-  EINA_HAVE_EVAS_FALSE=
-fi
-
-
-# Ecore library for comparison in the benchmark
-
-have_ecore="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-
-pkg_failed=no
-{ echo "$as_me:$LINENO: checking for ECORE" >&5
-echo $ECHO_N "checking for ECORE... $ECHO_C" >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$ECORE_CFLAGS"; then
-        pkg_cv_ECORE_CFLAGS="$ECORE_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
-  ($PKG_CONFIG --exists --print-errors "ecore") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_ECORE_CFLAGS=`$PKG_CONFIG --cflags "ecore" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$ECORE_LIBS"; then
-        pkg_cv_ECORE_LIBS="$ECORE_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
-  ($PKG_CONFIG --exists --print-errors "ecore") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  pkg_cv_ECORE_LIBS=`$PKG_CONFIG --libs "ecore" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    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
-	        ECORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ecore"`
-        else
-	        ECORE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ecore"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$ECORE_PKG_ERRORS" >&5
-
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-                have_ecore="no"
-
-elif test $pkg_failed = untried; then
-	have_ecore="no"
-
-else
-	ECORE_CFLAGS=$pkg_cv_ECORE_CFLAGS
-	ECORE_LIBS=$pkg_cv_ECORE_LIBS
-        { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-	have_ecore="yes"
-fi
-fi
-
- if test "x${have_ecore}" = "xyes"; then
-  EINA_HAVE_ECORE_TRUE=
-  EINA_HAVE_ECORE_FALSE='#'
-else
-  EINA_HAVE_ECORE_TRUE='#'
-  EINA_HAVE_ECORE_FALSE=
-fi
-
+# Check ememoa memory pool library
 
-# Check if we want to benchmark on real data
-enable_benchmark_e17="no"
-# Check whether --enable-e17 was given.
-if test "${enable_e17+set}" = set; then
-  enableval=$enable_e17;
+# Check whether --enable-ememoa was given.
+if test "${enable_ememoa+set}" = set; then
+  enableval=$enable_ememoa;
     if test "x${enableval}" = "xyes" ; then
-       enable_benchmark_e17="yes"
+       enable_ememoa="yes"
     else
-       enable_benchmark_e17="no"
+       enable_ememoa="no"
     fi
 
 else
-  enable_benchmark_e17="no"
-
-fi
+  enable_ememoa="yes"
 
-{ echo "$as_me:$LINENO: checking whether e17 real data benchmark are built" >&5
-echo $ECHO_N "checking whether e17 real data benchmark are built... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: ${enable_benchmark_e17}" >&5
-echo "${ECHO_T}${enable_benchmark_e17}" >&6; }
- if test "x${enable_benchmark_e17}" = "xyes"; then
-  EINA_ENABLE_BENCHMARK_E17_TRUE=
-  EINA_ENABLE_BENCHMARK_E17_FALSE='#'
-else
-  EINA_ENABLE_BENCHMARK_E17_TRUE='#'
-  EINA_ENABLE_BENCHMARK_E17_FALSE=
 fi
 
-
-# Check ememoa memory pool library
+{ echo "$as_me:$LINENO: checking whether to use ememoa for memory pool" >&5
+echo $ECHO_N "checking whether to use ememoa for memory pool... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $enable_ememoa" >&5
+echo "${ECHO_T}$enable_ememoa" >&6; }
 
 if test "x${enable_ememoa}" = "xyes" ; then
 
@@ -14748,7 +14324,6 @@ sed 's/^/| /' conftest.$ac_ext >&5
 fi
 
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
 fi
 
 
@@ -15119,6 +14694,16 @@ esac
 
 
 
+EINA_CPPFLAGS=""
+case "$host_os" in
+   mingw32ce* | cegcc*)
+      EINA_CPPFLAGS="-D_WIN32_WCE=0x0420"
+      ;;
+   mingw*)
+      EINA_CPPFLAGS="-D_WIN32_WINNT=0x0500"
+      ;;
+esac
+
 EINA_CFLAGS="${EFL_COVERAGE_CFLAGS}"
 case "${host_os}" in
    cegcc*)
@@ -15146,6 +14731,7 @@ fi
 
 
 
+
 ### Checks for linker characteristics
 EINA_LIBS="${EFL_COVERAGE_LIBS}"
 lt_enable_auto_import=""
@@ -15543,15 +15129,13 @@ fi
 #dlopen and dladdr
 dlopen_libs=""
 case "$host_os" in
-   mingw32ce* | cegcc*)
+   mingw* | cegcc*)
 # managed by evil
       cat >>confdefs.h <<\_ACEOF
 #define HAVE_DLADDR 1
 _ACEOF
 
       ;;
-   mingw*)
-      ;;
    *)
 
 for ac_func in dlopen
@@ -15895,22 +15479,413 @@ echo "$as_me: error: Cannot find dlopen" >&2;}
 esac
 
 
+### Modules
+
+
+
+want_module="yes"
+
+# Check whether --enable-chained-pool was given.
+if test "${enable_chained_pool+set}" = set; then
+  enableval=$enable_chained_pool;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to enable chained pool built" >&5
+echo $ECHO_N "checking whether to enable chained pool built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${have_module}" >&5
+echo "${ECHO_T}${have_module}" >&6; }
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to build chained pool" >&5
+echo $ECHO_N "checking whether to build chained pool... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${build_module}" >&5
+echo "${ECHO_T}${build_module}" >&6; }
+
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+ if test "x${build_module}" = "xyes"; then
+  EINA_BUILD_CHAINED_POOL_TRUE=
+  EINA_BUILD_CHAINED_POOL_FALSE='#'
+else
+  EINA_BUILD_CHAINED_POOL_TRUE='#'
+  EINA_BUILD_CHAINED_POOL_FALSE=
+fi
+
+ if test "x${static_module}" = "xyes"; then
+  EINA_STATIC_BUILD_CHAINED_POOL_TRUE=
+  EINA_STATIC_BUILD_CHAINED_POOL_FALSE='#'
+else
+  EINA_STATIC_BUILD_CHAINED_POOL_TRUE='#'
+  EINA_STATIC_BUILD_CHAINED_POOL_FALSE=
+fi
+
+
+if test "x${static_module}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_STATIC_BUILD_CHAINED_POOL 1
+_ACEOF
+
+   have_static_module="yes"
+fi
+
+enable_chained_pool="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_chained_pool=${enable_module}
+fi
+
+
+
+
+
+
+want_module="${enable_ememoa}"
+
+# Check whether --enable-ememoa-fixed was given.
+if test "${enable_ememoa_fixed+set}" = set; then
+  enableval=$enable_ememoa_fixed;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to enable ememoa fixed built" >&5
+echo $ECHO_N "checking whether to enable ememoa fixed built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${have_module}" >&5
+echo "${ECHO_T}${have_module}" >&6; }
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to build ememoa fixed" >&5
+echo $ECHO_N "checking whether to build ememoa fixed... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${build_module}" >&5
+echo "${ECHO_T}${build_module}" >&6; }
+
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+ if test "x${build_module}" = "xyes"; then
+  EINA_BUILD_EMEMOA_FIXED_TRUE=
+  EINA_BUILD_EMEMOA_FIXED_FALSE='#'
+else
+  EINA_BUILD_EMEMOA_FIXED_TRUE='#'
+  EINA_BUILD_EMEMOA_FIXED_FALSE=
+fi
+
+ if test "x${static_module}" = "xyes"; then
+  EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE=
+  EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE='#'
+else
+  EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE='#'
+  EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE=
+fi
+
+
+if test "x${static_module}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_STATIC_BUILD_EMEMOA_FIXED 1
+_ACEOF
+
+   have_static_module="yes"
+fi
+
+enable_ememoa_fixed="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_ememoa_fixed=${enable_module}
+fi
+
+
+
+
+
+
+want_module="${enable_ememoa}"
+
+# Check whether --enable-ememoa-unknown was given.
+if test "${enable_ememoa_unknown+set}" = set; then
+  enableval=$enable_ememoa_unknown;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to enable ememoa unknown built" >&5
+echo $ECHO_N "checking whether to enable ememoa unknown built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${have_module}" >&5
+echo "${ECHO_T}${have_module}" >&6; }
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to build ememoa unknown" >&5
+echo $ECHO_N "checking whether to build ememoa unknown... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${build_module}" >&5
+echo "${ECHO_T}${build_module}" >&6; }
+
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+ if test "x${build_module}" = "xyes"; then
+  EINA_BUILD_EMEMOA_UNKNOWN_TRUE=
+  EINA_BUILD_EMEMOA_UNKNOWN_FALSE='#'
+else
+  EINA_BUILD_EMEMOA_UNKNOWN_TRUE='#'
+  EINA_BUILD_EMEMOA_UNKNOWN_FALSE=
+fi
+
+ if test "x${static_module}" = "xyes"; then
+  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE=
+  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE='#'
+else
+  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE='#'
+  EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE=
+fi
+
+
+if test "x${static_module}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_STATIC_BUILD_EMEMOA_UNKNOWN 1
+_ACEOF
+
+   have_static_module="yes"
+fi
+
+enable_ememoa_unknown="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_ememoa_unknown=${enable_module}
+fi
+
+
+
+
+
+
+want_module="yes"
+
+# Check whether --enable-fixed-bitmap was given.
+if test "${enable_fixed_bitmap+set}" = set; then
+  enableval=$enable_fixed_bitmap;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to enable fixed bitmap built" >&5
+echo $ECHO_N "checking whether to enable fixed bitmap built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${have_module}" >&5
+echo "${ECHO_T}${have_module}" >&6; }
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to build fixed bitmap" >&5
+echo $ECHO_N "checking whether to build fixed bitmap... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${build_module}" >&5
+echo "${ECHO_T}${build_module}" >&6; }
+
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+ if test "x${build_module}" = "xyes"; then
+  EINA_BUILD_FIXED_BITMAP_TRUE=
+  EINA_BUILD_FIXED_BITMAP_FALSE='#'
+else
+  EINA_BUILD_FIXED_BITMAP_TRUE='#'
+  EINA_BUILD_FIXED_BITMAP_FALSE=
+fi
+
+ if test "x${static_module}" = "xyes"; then
+  EINA_STATIC_BUILD_FIXED_BITMAP_TRUE=
+  EINA_STATIC_BUILD_FIXED_BITMAP_FALSE='#'
+else
+  EINA_STATIC_BUILD_FIXED_BITMAP_TRUE='#'
+  EINA_STATIC_BUILD_FIXED_BITMAP_FALSE=
+fi
+
+
+if test "x${static_module}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_STATIC_BUILD_FIXED_BITMAP 1
+_ACEOF
+
+   have_static_module="yes"
+fi
+
+enable_fixed_bitmap="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_fixed_bitmap=${enable_module}
+fi
+
+
+
+
+
+
+want_module="yes"
+
+# Check whether --enable-pass-through was given.
+if test "${enable_pass_through+set}" = set; then
+  enableval=$enable_pass_through;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to enable pass through built" >&5
+echo $ECHO_N "checking whether to enable pass through built... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${have_module}" >&5
+echo "${ECHO_T}${have_module}" >&6; }
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
+
+{ echo "$as_me:$LINENO: checking whether to build pass through" >&5
+echo $ECHO_N "checking whether to build pass through... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${build_module}" >&5
+echo "${ECHO_T}${build_module}" >&6; }
+
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+ if test "x${build_module}" = "xyes"; then
+  EINA_BUILD_PASS_THROUGH_TRUE=
+  EINA_BUILD_PASS_THROUGH_FALSE='#'
+else
+  EINA_BUILD_PASS_THROUGH_TRUE='#'
+  EINA_BUILD_PASS_THROUGH_FALSE=
+fi
+
+ if test "x${static_module}" = "xyes"; then
+  EINA_STATIC_BUILD_PASS_THROUGH_TRUE=
+  EINA_STATIC_BUILD_PASS_THROUGH_FALSE='#'
+else
+  EINA_STATIC_BUILD_PASS_THROUGH_TRUE='#'
+  EINA_STATIC_BUILD_PASS_THROUGH_FALSE=
+fi
+
+
+if test "x${static_module}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define EINA_STATIC_BUILD_PASS_THROUGH 1
+_ACEOF
+
+   have_static_module="yes"
+fi
+
+enable_pass_through="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_pass_through=${enable_module}
+fi
+
+
+
 
-### Create the .pc.in file according to the major version
-#cat > ${srcdir}/eina-${VMAJ}.pc.in << EOF
-#prefix=@prefix@
-#exec_prefix=@exec_prefix@
-#libdir=@libdir@
-#includedir=@includedir@
-#
-#Name: Eina
-#Description: A Library that implements fast data types and miscellaneous tools
-#Requires:
-#Version: @VERSION@
-#Libs: -L${libdir} -leina
-#Libs.private: -ldl
-#Cflags: -I${includedir}/eina- at VMAJ@ -I${includedir}/eina- at VMAJ@/eina
-#EOF
 
 
 ### Make the debug preprocessor configurable
@@ -15931,14 +15906,16 @@ if test "${enable_tests+set}" = set; then
 
 else
   _efl_enable_tests="no"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether tests are built" >&5
 echo $ECHO_N "checking whether tests are built... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${_efl_enable_tests}" >&5
 echo "${ECHO_T}${_efl_enable_tests}" >&6; }
 
+
+
 if test "x${_efl_enable_tests}" = "xyes" ; then
 
 pkg_failed=no
@@ -16002,10 +15979,8 @@ fi
 	{ echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
                 _efl_enable_tests="no"
-
 elif test $pkg_failed = untried; then
 	_efl_enable_tests="no"
-
 else
 	CHECK_CFLAGS=$pkg_cv_CHECK_CFLAGS
 	CHECK_LIBS=$pkg_cv_CHECK_LIBS
@@ -16044,9 +16019,9 @@ if test "${enable_coverage+set}" = set; then
 
 else
   _efl_enable_coverage="no"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether to use profiling instrumentation" >&5
 echo $ECHO_N "checking whether to use profiling instrumentation... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: $_efl_enable_coverage" >&5
@@ -16144,9 +16119,9 @@ if test "${enable_benchmark+set}" = set; then
 
 else
   _efl_enable_benchmark="no"
-
 fi
 
+
 { echo "$as_me:$LINENO: checking whether benchmark are built" >&5
 echo $ECHO_N "checking whether benchmark are built... $ECHO_C" >&6; }
 { echo "$as_me:$LINENO: result: ${_efl_enable_benchmark}" >&5
@@ -16168,6 +16143,355 @@ else
 fi
 
 
+
+want_module="${enable_benchmark}"
+have_module="no"
+
+# Check whether --enable-evas was given.
+if test "${enable_evas+set}" = set; then
+  enableval=$enable_evas;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       enable_module="no"
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for EVAS" >&5
+echo $ECHO_N "checking for EVAS... $ECHO_C" >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVAS_CFLAGS"; then
+        pkg_cv_EVAS_CFLAGS="$EVAS_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evas") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVAS_CFLAGS=`$PKG_CONFIG --cflags "evas" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVAS_LIBS"; then
+        pkg_cv_EVAS_LIBS="$EVAS_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evas\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evas") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVAS_LIBS=`$PKG_CONFIG --libs "evas" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    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
+	        EVAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evas"`
+        else
+	        EVAS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evas"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$EVAS_PKG_ERRORS" >&5
+
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+                have_module="no"
+elif test $pkg_failed = untried; then
+	have_module="no"
+else
+	EVAS_CFLAGS=$pkg_cv_EVAS_CFLAGS
+	EVAS_LIBS=$pkg_cv_EVAS_LIBS
+        { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+	have_module="yes"
+fi
+fi
+
+ if test "x${have_module}" = "xyes"; then
+  EINA_HAVE_EVAS_TRUE=
+  EINA_HAVE_EVAS_FALSE='#'
+else
+  EINA_HAVE_EVAS_TRUE='#'
+  EINA_HAVE_EVAS_FALSE=
+fi
+
+
+if test "x${have_module}" = "xyes" ; then
+   enable_benchmark_evas="yes"
+else
+   enable_benchmark_evas="no"
+fi
+
+
+
+
+
+
+want_module="${enable_benchmark}"
+have_module="no"
+
+# Check whether --enable-ecore was given.
+if test "${enable_ecore+set}" = set; then
+  enableval=$enable_ecore;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       enable_module="no"
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for ECORE" >&5
+echo $ECHO_N "checking for ECORE... $ECHO_C" >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$ECORE_CFLAGS"; then
+        pkg_cv_ECORE_CFLAGS="$ECORE_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
+  ($PKG_CONFIG --exists --print-errors "ecore") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_ECORE_CFLAGS=`$PKG_CONFIG --cflags "ecore" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$ECORE_LIBS"; then
+        pkg_cv_ECORE_LIBS="$ECORE_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ecore\"") >&5
+  ($PKG_CONFIG --exists --print-errors "ecore") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_ECORE_LIBS=`$PKG_CONFIG --libs "ecore" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    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
+	        ECORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ecore"`
+        else
+	        ECORE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ecore"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$ECORE_PKG_ERRORS" >&5
+
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+                have_module="no"
+elif test $pkg_failed = untried; then
+	have_module="no"
+else
+	ECORE_CFLAGS=$pkg_cv_ECORE_CFLAGS
+	ECORE_LIBS=$pkg_cv_ECORE_LIBS
+        { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+	have_module="yes"
+fi
+fi
+
+ if test "x${have_module}" = "xyes"; then
+  EINA_HAVE_ECORE_TRUE=
+  EINA_HAVE_ECORE_FALSE='#'
+else
+  EINA_HAVE_ECORE_TRUE='#'
+  EINA_HAVE_ECORE_FALSE=
+fi
+
+
+if test "x${have_module}" = "xyes" ; then
+   enable_benchmark_ecore="yes"
+else
+   enable_benchmark_ecore="no"
+fi
+
+
+
+
+
+
+want_module="${enable_benchmark}"
+have_module="no"
+
+# Check whether --enable-glib was given.
+if test "${enable_glib+set}" = set; then
+  enableval=$enable_glib;
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       enable_module="no"
+    fi
+
+else
+  enable_module="yes"
+fi
+
+
+if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for GLIB" >&5
+echo $ECHO_N "checking for GLIB... $ECHO_C" >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GLIB_CFLAGS"; then
+        pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GLIB_LIBS"; then
+        pkg_cv_GLIB_LIBS="$GLIB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0\"") >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    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
+	        GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-2.0"`
+        else
+	        GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GLIB_PKG_ERRORS" >&5
+
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+                have_module="no"
+elif test $pkg_failed = untried; then
+	have_module="no"
+else
+	GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
+	GLIB_LIBS=$pkg_cv_GLIB_LIBS
+        { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+	have_module="yes"
+fi
+fi
+
+ if test "x${have_module}" = "xyes"; then
+  EINA_HAVE_GLIB_TRUE=
+  EINA_HAVE_GLIB_FALSE='#'
+else
+  EINA_HAVE_GLIB_TRUE='#'
+  EINA_HAVE_GLIB_FALSE=
+fi
+
+
+if test "x${have_module}" = "xyes" ; then
+   enable_benchmark_glib="yes"
+else
+   enable_benchmark_glib="no"
+fi
+
+
+
+
+
+### Create the .pc.in file according to the major version
+#cat > ${srcdir}/eina-${VMAJ}.pc.in << EOF
+#prefix=@prefix@
+#exec_prefix=@exec_prefix@
+#libdir=@libdir@
+#includedir=@includedir@
+#
+#Name: Eina
+#Description: A Library that implements fast data types and miscellaneous tools
+#Requires:
+#Version: @VERSION@
+#Libs: -L${libdir} -leina
+#Libs.private: -ldl
+#Cflags: -I${includedir}/eina- at VMAJ@ -I${includedir}/eina- at VMAJ@/eina
+#EOF
+
 ac_config_files="$ac_config_files Makefile eina-0.pc eina.spec doc/Makefile src/Makefile src/include/Makefile src/include/eina_config.h src/lib/Makefile src/modules/Makefile src/modules/mp/Makefile src/modules/mp/chained_pool/Makefile src/modules/mp/ememoa_fixed/Makefile src/modules/mp/ememoa_unknown/Makefile src/modules/mp/pass_through/Makefile src/modules/mp/fixed_bitmap/Makefile src/tests/Makefile"
 
 
@@ -16288,80 +16612,94 @@ echo "$as_me: error: conditional \"SAFETY_CHECKS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_STATIC_BUILD_CHAINED_POOL_TRUE}" && test -z "${EINA_STATIC_BUILD_CHAINED_POOL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
+if test -z "${EINA_ENABLE_BENCHMARK_E17_TRUE}" && test -z "${EINA_ENABLE_BENCHMARK_E17_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
+echo "$as_me: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
+if test -z "${EFL_BUILD_DOC_TRUE}" && test -z "${EFL_BUILD_DOC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EFL_BUILD_DOC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
+echo "$as_me: error: conditional \"EFL_BUILD_DOC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
+if test -z "${EINA_ENABLE_EMEMOA_TRUE}" && test -z "${EINA_ENABLE_EMEMOA_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
+echo "$as_me: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_STATIC_BUILD_PASS_THROUGH_TRUE}" && test -z "${EINA_STATIC_BUILD_PASS_THROUGH_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
+if test -z "${EINA_BUILD_CHAINED_POOL_TRUE}" && test -z "${EINA_BUILD_CHAINED_POOL_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
+echo "$as_me: error: conditional \"EINA_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_TRUE}" && test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
+if test -z "${EINA_STATIC_BUILD_CHAINED_POOL_TRUE}" && test -z "${EINA_STATIC_BUILD_CHAINED_POOL_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
+echo "$as_me: error: conditional \"EINA_STATIC_BUILD_CHAINED_POOL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EFL_BUILD_DOC_TRUE}" && test -z "${EFL_BUILD_DOC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EFL_BUILD_DOC\" was never defined.
+if test -z "${EINA_BUILD_EMEMOA_FIXED_TRUE}" && test -z "${EINA_BUILD_EMEMOA_FIXED_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EFL_BUILD_DOC\" was never defined.
+echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_HAVE_GLIB_TRUE}" && test -z "${EINA_HAVE_GLIB_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+if test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_FIXED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_HAVE_EVAS_TRUE}" && test -z "${EINA_HAVE_EVAS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+if test -z "${EINA_BUILD_EMEMOA_UNKNOWN_TRUE}" && test -z "${EINA_BUILD_EMEMOA_UNKNOWN_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+echo "$as_me: error: conditional \"EINA_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_HAVE_ECORE_TRUE}" && test -z "${EINA_HAVE_ECORE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+if test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE}" && test -z "${EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+echo "$as_me: error: conditional \"EINA_STATIC_BUILD_EMEMOA_UNKNOWN\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_ENABLE_BENCHMARK_E17_TRUE}" && test -z "${EINA_ENABLE_BENCHMARK_E17_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
+if test -z "${EINA_BUILD_FIXED_BITMAP_TRUE}" && test -z "${EINA_BUILD_FIXED_BITMAP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_ENABLE_BENCHMARK_E17\" was never defined.
+echo "$as_me: error: conditional \"EINA_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${EINA_ENABLE_EMEMOA_TRUE}" && test -z "${EINA_ENABLE_EMEMOA_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
+if test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_TRUE}" && test -z "${EINA_STATIC_BUILD_FIXED_BITMAP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"EINA_ENABLE_EMEMOA\" was never defined.
+echo "$as_me: error: conditional \"EINA_STATIC_BUILD_FIXED_BITMAP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${EINA_BUILD_PASS_THROUGH_TRUE}" && test -z "${EINA_BUILD_PASS_THROUGH_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"EINA_BUILD_PASS_THROUGH\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${EINA_STATIC_BUILD_PASS_THROUGH_TRUE}" && test -z "${EINA_STATIC_BUILD_PASS_THROUGH_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"EINA_STATIC_BUILD_PASS_THROUGH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -16386,6 +16724,27 @@ echo "$as_me: error: conditional \"EFL_ENABLE_BENCHMARK\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${EINA_HAVE_EVAS_TRUE}" && test -z "${EINA_HAVE_EVAS_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"EINA_HAVE_EVAS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${EINA_HAVE_ECORE_TRUE}" && test -z "${EINA_HAVE_ECORE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"EINA_HAVE_ECORE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${EINA_HAVE_GLIB_TRUE}" && test -z "${EINA_HAVE_GLIB_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"EINA_HAVE_GLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
@@ -16686,7 +17045,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by eina $as_me 0.0.2.061, which was
+This file was extended by eina $as_me 0.0.2.062, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16739,7 +17098,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-eina config.status 0.0.2.061
+eina config.status 0.0.2.062
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -17348,16 +17707,8 @@ SAFETY_CHECKS_TRUE!$SAFETY_CHECKS_TRUE$ac_delim
 SAFETY_CHECKS_FALSE!$SAFETY_CHECKS_FALSE$ac_delim
 EINA_CONFIGURE_SAFETY_CHECKS!$EINA_CONFIGURE_SAFETY_CHECKS$ac_delim
 EINA_CONFIGURE_DEFAULT_MEMPOOL!$EINA_CONFIGURE_DEFAULT_MEMPOOL$ac_delim
-EINA_STATIC_BUILD_CHAINED_POOL_TRUE!$EINA_STATIC_BUILD_CHAINED_POOL_TRUE$ac_delim
-EINA_STATIC_BUILD_CHAINED_POOL_FALSE!$EINA_STATIC_BUILD_CHAINED_POOL_FALSE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE!$EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE!$EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE$ac_delim
-EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE$ac_delim
-EINA_STATIC_BUILD_PASS_THROUGH_TRUE!$EINA_STATIC_BUILD_PASS_THROUGH_TRUE$ac_delim
-EINA_STATIC_BUILD_PASS_THROUGH_FALSE!$EINA_STATIC_BUILD_PASS_THROUGH_FALSE$ac_delim
-EINA_STATIC_BUILD_FIXED_BITMAP_TRUE!$EINA_STATIC_BUILD_FIXED_BITMAP_TRUE$ac_delim
-EINA_STATIC_BUILD_FIXED_BITMAP_FALSE!$EINA_STATIC_BUILD_FIXED_BITMAP_FALSE$ac_delim
+EINA_ENABLE_BENCHMARK_E17_TRUE!$EINA_ENABLE_BENCHMARK_E17_TRUE$ac_delim
+EINA_ENABLE_BENCHMARK_E17_FALSE!$EINA_ENABLE_BENCHMARK_E17_FALSE$ac_delim
 PKG_CONFIG!$PKG_CONFIG$ac_delim
 efl_have_doxygen!$efl_have_doxygen$ac_delim
 efl_doxygen!$efl_doxygen$ac_delim
@@ -17365,29 +17716,36 @@ EFL_BUILD_DOC_TRUE!$EFL_BUILD_DOC_TRUE$ac_delim
 EFL_BUILD_DOC_FALSE!$EFL_BUILD_DOC_FALSE$ac_delim
 EVIL_CFLAGS!$EVIL_CFLAGS$ac_delim
 EVIL_LIBS!$EVIL_LIBS$ac_delim
-GLIB_CFLAGS!$GLIB_CFLAGS$ac_delim
-GLIB_LIBS!$GLIB_LIBS$ac_delim
-EINA_HAVE_GLIB_TRUE!$EINA_HAVE_GLIB_TRUE$ac_delim
-EINA_HAVE_GLIB_FALSE!$EINA_HAVE_GLIB_FALSE$ac_delim
-EVAS_CFLAGS!$EVAS_CFLAGS$ac_delim
-EVAS_LIBS!$EVAS_LIBS$ac_delim
-EINA_HAVE_EVAS_TRUE!$EINA_HAVE_EVAS_TRUE$ac_delim
-EINA_HAVE_EVAS_FALSE!$EINA_HAVE_EVAS_FALSE$ac_delim
-ECORE_CFLAGS!$ECORE_CFLAGS$ac_delim
-ECORE_LIBS!$ECORE_LIBS$ac_delim
-EINA_HAVE_ECORE_TRUE!$EINA_HAVE_ECORE_TRUE$ac_delim
-EINA_HAVE_ECORE_FALSE!$EINA_HAVE_ECORE_FALSE$ac_delim
-EINA_ENABLE_BENCHMARK_E17_TRUE!$EINA_ENABLE_BENCHMARK_E17_TRUE$ac_delim
-EINA_ENABLE_BENCHMARK_E17_FALSE!$EINA_ENABLE_BENCHMARK_E17_FALSE$ac_delim
 EMEMOA_CFLAGS!$EMEMOA_CFLAGS$ac_delim
 EMEMOA_LIBS!$EMEMOA_LIBS$ac_delim
 EINA_ENABLE_EMEMOA_TRUE!$EINA_ENABLE_EMEMOA_TRUE$ac_delim
 EINA_ENABLE_EMEMOA_FALSE!$EINA_ENABLE_EMEMOA_FALSE$ac_delim
+EINA_CPPFLAGS!$EINA_CPPFLAGS$ac_delim
 EINA_CFLAGS!$EINA_CFLAGS$ac_delim
 EINA_LIBS!$EINA_LIBS$ac_delim
 lt_enable_auto_import!$lt_enable_auto_import$ac_delim
 ALLOCA!$ALLOCA$ac_delim
 dlopen_libs!$dlopen_libs$ac_delim
+EINA_BUILD_CHAINED_POOL_TRUE!$EINA_BUILD_CHAINED_POOL_TRUE$ac_delim
+EINA_BUILD_CHAINED_POOL_FALSE!$EINA_BUILD_CHAINED_POOL_FALSE$ac_delim
+EINA_STATIC_BUILD_CHAINED_POOL_TRUE!$EINA_STATIC_BUILD_CHAINED_POOL_TRUE$ac_delim
+EINA_STATIC_BUILD_CHAINED_POOL_FALSE!$EINA_STATIC_BUILD_CHAINED_POOL_FALSE$ac_delim
+EINA_BUILD_EMEMOA_FIXED_TRUE!$EINA_BUILD_EMEMOA_FIXED_TRUE$ac_delim
+EINA_BUILD_EMEMOA_FIXED_FALSE!$EINA_BUILD_EMEMOA_FIXED_FALSE$ac_delim
+EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE!$EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE$ac_delim
+EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE!$EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE$ac_delim
+EINA_BUILD_EMEMOA_UNKNOWN_TRUE!$EINA_BUILD_EMEMOA_UNKNOWN_TRUE$ac_delim
+EINA_BUILD_EMEMOA_UNKNOWN_FALSE!$EINA_BUILD_EMEMOA_UNKNOWN_FALSE$ac_delim
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE$ac_delim
+EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE!$EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE$ac_delim
+EINA_BUILD_FIXED_BITMAP_TRUE!$EINA_BUILD_FIXED_BITMAP_TRUE$ac_delim
+EINA_BUILD_FIXED_BITMAP_FALSE!$EINA_BUILD_FIXED_BITMAP_FALSE$ac_delim
+EINA_STATIC_BUILD_FIXED_BITMAP_TRUE!$EINA_STATIC_BUILD_FIXED_BITMAP_TRUE$ac_delim
+EINA_STATIC_BUILD_FIXED_BITMAP_FALSE!$EINA_STATIC_BUILD_FIXED_BITMAP_FALSE$ac_delim
+EINA_BUILD_PASS_THROUGH_TRUE!$EINA_BUILD_PASS_THROUGH_TRUE$ac_delim
+EINA_BUILD_PASS_THROUGH_FALSE!$EINA_BUILD_PASS_THROUGH_FALSE$ac_delim
+EINA_STATIC_BUILD_PASS_THROUGH_TRUE!$EINA_STATIC_BUILD_PASS_THROUGH_TRUE$ac_delim
+EINA_STATIC_BUILD_PASS_THROUGH_FALSE!$EINA_STATIC_BUILD_PASS_THROUGH_FALSE$ac_delim
 CHECK_CFLAGS!$CHECK_CFLAGS$ac_delim
 CHECK_LIBS!$CHECK_LIBS$ac_delim
 EFL_ENABLE_TESTS_TRUE!$EFL_ENABLE_TESTS_TRUE$ac_delim
@@ -17399,11 +17757,23 @@ EFL_ENABLE_COVERAGE_TRUE!$EFL_ENABLE_COVERAGE_TRUE$ac_delim
 EFL_ENABLE_COVERAGE_FALSE!$EFL_ENABLE_COVERAGE_FALSE$ac_delim
 EFL_ENABLE_BENCHMARK_TRUE!$EFL_ENABLE_BENCHMARK_TRUE$ac_delim
 EFL_ENABLE_BENCHMARK_FALSE!$EFL_ENABLE_BENCHMARK_FALSE$ac_delim
+EVAS_CFLAGS!$EVAS_CFLAGS$ac_delim
+EVAS_LIBS!$EVAS_LIBS$ac_delim
+EINA_HAVE_EVAS_TRUE!$EINA_HAVE_EVAS_TRUE$ac_delim
+EINA_HAVE_EVAS_FALSE!$EINA_HAVE_EVAS_FALSE$ac_delim
+ECORE_CFLAGS!$ECORE_CFLAGS$ac_delim
+ECORE_LIBS!$ECORE_LIBS$ac_delim
+EINA_HAVE_ECORE_TRUE!$EINA_HAVE_ECORE_TRUE$ac_delim
+EINA_HAVE_ECORE_FALSE!$EINA_HAVE_ECORE_FALSE$ac_delim
+GLIB_CFLAGS!$GLIB_CFLAGS$ac_delim
+GLIB_LIBS!$GLIB_LIBS$ac_delim
+EINA_HAVE_GLIB_TRUE!$EINA_HAVE_GLIB_TRUE$ac_delim
+EINA_HAVE_GLIB_FALSE!$EINA_HAVE_GLIB_FALSE$ac_delim
 LIBOBJS!$LIBOBJS$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 73; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 84; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@@ -18668,9 +19038,9 @@ echo "  Tests................: ${enable_tests}"
 echo "  Coverage.............: ${enable_coverage}"
 echo "  Benchmark............: ${enable_benchmark}"
 if test "x${enable_benchmark}" = "xyes" ; then
-echo "    Glib...............: ${have_glib}"
-echo "    Evas...............: ${have_evas}"
-echo "    Ecore..............: ${have_ecore}"
+echo "    Glib...............: ${enable_benchmark_glib}"
+echo "    Evas...............: ${enable_benchmark_evas}"
+echo "    Ecore..............: ${enable_benchmark_ecore}"
 echo "    E17 real data......: ${enable_benchmark_e17}"
 fi
 echo
@@ -18681,14 +19051,12 @@ echo "  SSE..................: ${have_sse}"
 echo "  SSE2.................: ${have_sse2}"
 echo "  ALTIVEC..............: ${have_altivec}"
 echo
-echo "  Memory pool:"
-echo "    Ememoa.............: ${enable_ememoa}"
-echo
-echo "  Static build of memory pools:"
-echo "    Chained pool.......: ${enable_static_chained_pool}"
-echo "    Ememoa fixed.......: ${enable_static_ememoa_fixed}"
-echo "    Ememoa unknown.....: ${enable_static_ememoa_unknown}"
-echo "    Pass through.......: ${enable_static_pass_through}"
+echo "  Memory pools:"
+echo "    Chained pool.......: ${enable_chained_pool}"
+echo "    Ememoa fixed.......: ${enable_ememoa_fixed}"
+echo "    Ememoa unknown.....: ${enable_ememoa_unknown}"
+echo "    Fixed bitmap.......: ${enable_fixed_bitmap}"
+echo "    Pass through.......: ${enable_pass_through}"
 echo
 echo "  Installation.........: make install"
 echo
@@ -18698,3 +19066,10 @@ echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE,"
 echo "and then afterwards as root (or the user who will install this), type"
 echo "'make install'. Change users with 'su' or 'sudo' appropriately."
 echo
+if test "x${have_static_module}" = "xyes" ; then
+echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Eina."
+echo "         You must know what you are doing, or else you will have a lot of problems."
+echo "         And dolphins will disappear from the earth."
+echo "         Think about that."
+echo
+fi
diff --git a/configure.ac b/configure.ac
index 2e6fca4..457006a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 # get rid of that stupid cache mechanism
 rm -f config.cache
 
-AC_INIT([eina], [0.0.2.061], [enlightenment-devel at lists.sourceforge.net])
+AC_INIT([eina], [0.0.2.062], [enlightenment-devel at lists.sourceforge.net])
 AC_PREREQ([2.60])
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_MACRO_DIR([m4])
@@ -28,7 +28,7 @@ AC_SUBST(version_info)
 
 ### Needed information
 
-release="ver-svn-02"
+release="ver-svn-03"
 case "$host_os" in
    mingw32ce* | cegcc*)
       MODULE_ARCH="$host_os-$host_cpu"
@@ -54,7 +54,7 @@ EFL_CHECK_PTHREAD([have_pthread="yes"], [have_pthread="no"])
 
 # Magic debug
 AC_ARG_ENABLE([magic-debug],
-   [AC_HELP_STRING([--disable-magic-debug], [disable magic debug of eina structure [default=enabled]])],
+   [AC_HELP_STRING([--disable-magic-debug], [disable magic debug of eina structure @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        have_magic_debug="yes"
@@ -74,7 +74,7 @@ AC_SUBST(EINA_CONFIGURE_MAGIC_DEBUG)
 
 # Safety checks (avoid crashes on wrong api usage)
 AC_ARG_ENABLE(safety-checks,
-   [AC_HELP_STRING([--disable-safety-checks], [disable safety checks for NULL pointers and like. [default=enabled]])],
+   [AC_HELP_STRING([--disable-safety-checks], [disable safety checks for NULL pointers and like. @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        have_safety_checks="yes"
@@ -96,7 +96,7 @@ AC_SUBST(EINA_CONFIGURE_SAFETY_CHECKS)
 
 # Choose best memory pool
 AC_ARG_ENABLE([default-mempool],
-   [AC_HELP_STRING([--enable-default-mempool], [Default memory allocator could be faster for some computer. [default=disabled]])],
+   [AC_HELP_STRING([--enable-default-mempool], [Default memory allocator could be faster for some computer. @<:@default=disabled@:>@])],
    [
     if test "x${enableval}" = "xyes"; then
        have_default_mempool="yes"
@@ -116,7 +116,7 @@ AC_SUBST(EINA_CONFIGURE_DEFAULT_MEMPOOL)
 
 # Report stringshare usage
 AC_ARG_ENABLE([stringshare-usage],
-   [AC_HELP_STRING([--enable-stringshare-usage], [Report stringshare usage on stringshare shutdown. [default=disabled]])],
+   [AC_HELP_STRING([--enable-stringshare-usage], [Report stringshare usage on stringshare shutdown. @<:@default=disabled@:>@])],
    [
     if test "x${enableval}" = "xyes"; then
        have_stringshare_usage="yes"
@@ -133,29 +133,23 @@ if test "x${have_stringshare_usage}" = "xyes"; then
    AC_DEFINE(EINA_STRINGSHARE_USAGE, 1, [Report Eina stringshare usage pattern])
 fi
 
-# Ememoa memory pool
-
-AC_ARG_ENABLE([ememoa],
-   [AC_HELP_STRING([--enable-ememoa], [build ememoa memory pool module @<:@default=yes@:>@])],
+# Check if we want to benchmark on real data
+enable_benchmark_e17="no"
+AC_ARG_ENABLE([e17],
+   [AC_HELP_STRING([--enable-e17], [enable heavy benchmark @<:@default=no@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
-       enable_ememoa="yes"
+       enable_benchmark_e17="yes"
     else
-       enable_ememoa="no"
+       enable_benchmark_e17="no"
     fi
    ],
-   [enable_ememoa="yes"]
-)
-AC_MSG_CHECKING([whether to use ememoa for memory pool])
-AC_MSG_RESULT([$enable_ememoa])
+   [enable_benchmark_e17="no"])
 
-# Static linking
+AC_MSG_CHECKING([whether e17 real data benchmark are built])
+AC_MSG_RESULT([${enable_benchmark_e17}])
 
-EINA_CHECK_STATIC([chained-pool], [chained pool])
-EINA_CHECK_STATIC([ememoa-fixed], [ememoa fixed])
-EINA_CHECK_STATIC([ememoa-unknown], [ememoa unknown])
-EINA_CHECK_STATIC([pass-through], [pass through])
-EINA_CHECK_STATIC([fixed-bitmap], [fixed bitmap])
+AM_CONDITIONAL(EINA_ENABLE_BENCHMARK_E17, test "x${enable_benchmark_e17}" = "xyes")
 
 
 ### Checks for programs
@@ -180,63 +174,21 @@ case "$host_os" in
    ;;
 esac
 
-# Glib library for comparison in the benchmark
-
-have_glib="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-   PKG_CHECK_MODULES([GLIB],
-      [glib-2.0],
-      [have_glib="yes"],
-      [have_glib="no"]
-   )
-fi
-
-AM_CONDITIONAL(EINA_HAVE_GLIB, test "x${have_glib}" = "xyes")
-
-# Evas library for comparison in the benchmark
-
-have_evas="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-   PKG_CHECK_MODULES([EVAS],
-      [evas],
-      [have_evas="yes"],
-      [have_evas="no"]
-   )
-fi
-
-AM_CONDITIONAL(EINA_HAVE_EVAS, test "x${have_evas}" = "xyes")
-
-# Ecore library for comparison in the benchmark
-
-have_ecore="no"
-if test "x${enable_benchmark}" = "xyes" ; then
-   PKG_CHECK_MODULES([ECORE],
-      [ecore],
-      [have_ecore="yes"],
-      [have_ecore="no"]
-   )
-fi
-
-AM_CONDITIONAL(EINA_HAVE_ECORE, test "x${have_ecore}" = "xyes")
+# Check ememoa memory pool library
 
-# Check if we want to benchmark on real data
-enable_benchmark_e17="no"
-AC_ARG_ENABLE([e17],
-   [AC_HELP_STRING([--enable-e17], [enable heavy benchmark @<:@default=no@:>@])],
+AC_ARG_ENABLE([ememoa],
+   [AC_HELP_STRING([--enable-ememoa], [build ememoa memory pool module @<:@default=yes@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
-       enable_benchmark_e17="yes"
+       enable_ememoa="yes"
     else
-       enable_benchmark_e17="no"
+       enable_ememoa="no"
     fi
    ],
-   [enable_benchmark_e17="no"]
+   [enable_ememoa="yes"]
 )
-AC_MSG_CHECKING([whether e17 real data benchmark are built])
-AC_MSG_RESULT([${enable_benchmark_e17}])
-AM_CONDITIONAL(EINA_ENABLE_BENCHMARK_E17, test "x${enable_benchmark_e17}" = "xyes")
-
-# Check ememoa memory pool library
+AC_MSG_CHECKING([whether to use ememoa for memory pool])
+AC_MSG_RESULT([$enable_ememoa])
 
 if test "x${enable_ememoa}" = "xyes" ; then
    PKG_CHECK_MODULES([EMEMOA],
@@ -270,6 +222,16 @@ AC_C_INLINE
 AC_C___ATTRIBUTE__
 AC_PROG_CC_STDC
 
+EINA_CPPFLAGS=""
+case "$host_os" in
+   mingw32ce* | cegcc*)
+      EINA_CPPFLAGS="-D_WIN32_WCE=0x0420"
+      ;;
+   mingw*)
+      EINA_CPPFLAGS="-D_WIN32_WINNT=0x0500"
+      ;;
+esac
+
 EINA_CFLAGS="${EFL_COVERAGE_CFLAGS}"
 case "${host_os}" in
    cegcc*)
@@ -294,6 +256,7 @@ if test "$GCC_MAJOR_VERSION" = "3" ; then
    EINA_CFLAGS="${EINA_CFLAGS} -fno-strict-aliasing"
 fi
 
+AC_SUBST(EINA_CPPFLAGS)
 AC_SUBST(EINA_CFLAGS)
 
 
@@ -332,13 +295,10 @@ AC_FUNC_ALLOCA
 #dlopen and dladdr
 dlopen_libs=""
 case "$host_os" in
-   mingw32ce* | cegcc*)
+   mingw* | cegcc*)
 # managed by evil
       AC_DEFINE(HAVE_DLADDR)
       ;;
-   mingw*)
-dnl nothing on mingw platform
-      ;;
    *)
       AC_CHECK_FUNCS([dlopen], [res="yes"], [res="no"])
       if test "x${res}" = "xyes" ; then
@@ -356,6 +316,25 @@ dnl nothing on mingw platform
 esac
 AC_SUBST(dlopen_libs)
 
+### Modules
+
+EINA_CHECK_MODULE([chained-pool], [yes], [chained pool])
+EINA_CHECK_MODULE([ememoa-fixed], [${enable_ememoa}], [ememoa fixed])
+EINA_CHECK_MODULE([ememoa-unknown], [${enable_ememoa}], [ememoa unknown])
+EINA_CHECK_MODULE([fixed-bitmap], [yes], [fixed bitmap])
+EINA_CHECK_MODULE([pass-through], [yes], [pass through])
+
+
+### Make the debug preprocessor configurable
+
+### Unit tests, coverage and benchmarking
+
+EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
+EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
+EFL_CHECK_BENCHMARK([enable_benchmark="yes"], [enable_benchmark="no"])
+EINA_BENCH_MODULE([evas], [${enable_benchmark}], [evas], [enable_benchmark_evas="yes"], [enable_benchmark_evas="no"])
+EINA_BENCH_MODULE([ecore], [${enable_benchmark}], [ecore], [enable_benchmark_ecore="yes"], [enable_benchmark_ecore="no"])
+EINA_BENCH_MODULE([glib], [${enable_benchmark}], [glib-2.0], [enable_benchmark_glib="yes"], [enable_benchmark_glib="no"])
 
 ### Create the .pc.in file according to the major version
 #cat > ${srcdir}/eina-${VMAJ}.pc.in << EOF
@@ -373,15 +352,6 @@ AC_SUBST(dlopen_libs)
 #Cflags: -I${includedir}/eina- at VMAJ@ -I${includedir}/eina- at VMAJ@/eina
 #EOF
 
-
-### Make the debug preprocessor configurable
-
-### Unit tests, coverage and benchmarking
-
-EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
-EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
-EFL_CHECK_BENCHMARK([enable_benchmark="yes"], [enable_benchmark="no"])
-
 AC_CONFIG_FILES([
 Makefile
 eina-0.pc
@@ -427,9 +397,9 @@ echo "  Tests................: ${enable_tests}"
 echo "  Coverage.............: ${enable_coverage}"
 echo "  Benchmark............: ${enable_benchmark}"
 if test "x${enable_benchmark}" = "xyes" ; then
-echo "    Glib...............: ${have_glib}"
-echo "    Evas...............: ${have_evas}"
-echo "    Ecore..............: ${have_ecore}"
+echo "    Glib...............: ${enable_benchmark_glib}"
+echo "    Evas...............: ${enable_benchmark_evas}"
+echo "    Ecore..............: ${enable_benchmark_ecore}"
 echo "    E17 real data......: ${enable_benchmark_e17}"
 fi
 echo
@@ -440,14 +410,12 @@ echo "  SSE..................: ${have_sse}"
 echo "  SSE2.................: ${have_sse2}"
 echo "  ALTIVEC..............: ${have_altivec}"
 echo
-echo "  Memory pool:"
-echo "    Ememoa.............: ${enable_ememoa}"
-echo
-echo "  Static build of memory pools:"
-echo "    Chained pool.......: ${enable_static_chained_pool}"
-echo "    Ememoa fixed.......: ${enable_static_ememoa_fixed}"
-echo "    Ememoa unknown.....: ${enable_static_ememoa_unknown}"
-echo "    Pass through.......: ${enable_static_pass_through}"
+echo "  Memory pools:"
+echo "    Chained pool.......: ${enable_chained_pool}"
+echo "    Ememoa fixed.......: ${enable_ememoa_fixed}"
+echo "    Ememoa unknown.....: ${enable_ememoa_unknown}"
+echo "    Fixed bitmap.......: ${enable_fixed_bitmap}"
+echo "    Pass through.......: ${enable_pass_through}"
 echo
 echo "  Installation.........: make install"
 echo
@@ -457,3 +425,10 @@ echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE,"
 echo "and then afterwards as root (or the user who will install this), type"
 echo "'make install'. Change users with 'su' or 'sudo' appropriately."
 echo
+if test "x${have_static_module}" = "xyes" ; then
+echo -e "\0033\01331;31mWarning\0033\01331;0m: You are trying to link statically one or more modules to Eina."
+echo "         You must know what you are doing, or else you will have a lot of problems."
+echo "         And dolphins will disappear from the earth."
+echo "         Think about that."
+echo
+fi
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 8de657d..d15e4d0 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -39,10 +39,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -88,6 +88,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
diff --git a/eina-0.pc b/eina-0.pc
index b2212e7..587c204 100644
--- a/eina-0.pc
+++ b/eina-0.pc
@@ -6,7 +6,7 @@ includedir=${prefix}/include
 Name: Eina
 Description: A Library that implements fast data types and miscellaneous tools
 Requires:
-Version: 0.0.2.061
+Version: 0.0.2.062
 Libs: -L${exec_prefix}/lib -leina
 Libs.private: -ldl
 Cflags: -I${includedir}/eina-0 -I${includedir}/eina-0/eina
diff --git a/eina.spec.in b/eina.spec
similarity index 97%
copy from eina.spec.in
copy to eina.spec
index 8abc4d3..ef8b0a2 100644
--- a/eina.spec.in
+++ b/eina.spec
@@ -1,8 +1,8 @@
 %define _missing_doc_files_terminate_build 0
 
 Summary: Data Type Library
-Name: @PACKAGE@
-Version: @VERSION@
+Name: eina
+Version: 0.0.2.062
 Release: 0.%(date '+%Y%m%d')
 License: BSD
 Group: System Environment/Libraries
diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4
index 3926d23..23479a9 100644
--- a/m4/ac_attribute.m4
+++ b/m4/ac_attribute.m4
@@ -31,8 +31,7 @@ int foo(int x __attribute__ ((unused)))
        [],
        [ac_cv___attribute__="yes"],
        [ac_cv___attribute__="no"]
-    )]
-)
+    )])
 
 AC_MSG_RESULT($ac_cv___attribute__)
 
@@ -44,3 +43,5 @@ if test "x${ac_cv___attribute__}" = "xyes" ; then
 fi
 
 ])
+
+dnl End of ac_attribute.m4
diff --git a/m4/efl_benchmark.m4 b/m4/efl_benchmark.m4
index 9e968c4..a1691eb 100644
--- a/m4/efl_benchmark.m4
+++ b/m4/efl_benchmark.m4
@@ -12,7 +12,7 @@ AC_DEFUN([EFL_CHECK_BENCHMARK],
 dnl configure option
 
 AC_ARG_ENABLE([benchmark],
-   [AC_HELP_STRING([--enable-benchmark], [enable tests @<:@default=no@:>@])],
+   [AC_HELP_STRING([--enable-benchmark], [enable benchmarking @<:@default=disabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_benchmark="yes"
@@ -20,16 +20,18 @@ AC_ARG_ENABLE([benchmark],
        _efl_enable_benchmark="no"
     fi
    ],
-   [_efl_enable_benchmark="no"]
-)
+   [_efl_enable_benchmark="no"])
+
 AC_MSG_CHECKING([whether benchmark are built])
 AC_MSG_RESULT([${_efl_enable_benchmark}])
 
 AM_CONDITIONAL(EFL_ENABLE_BENCHMARK, test "x${_efl_enable_benchmark}" = "xyes")
 
 if test "x${_efl_enable_benchmark}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
+
+dnl End of efl_benchmark.m4
diff --git a/m4/efl_coverage.m4 b/m4/efl_coverage.m4
index 1618f76..baf0002 100644
--- a/m4/efl_coverage.m4
+++ b/m4/efl_coverage.m4
@@ -16,7 +16,7 @@ AC_DEFUN([EFL_CHECK_COVERAGE],
 dnl configure option
 
 AC_ARG_ENABLE([coverage],
-   [AC_HELP_STRING([--enable-coverage], [compile with coverage profiling instrumentation @<:@default=no@:>@])],
+   [AC_HELP_STRING([--enable-coverage], [enable coverage profiling instrumentation @<:@default=disabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_coverage="yes"
@@ -24,8 +24,8 @@ AC_ARG_ENABLE([coverage],
        _efl_enable_coverage="no"
     fi
    ],
-   [_efl_enable_coverage="no"]
-)
+   [_efl_enable_coverage="no"])
+
 AC_MSG_CHECKING([whether to use profiling instrumentation])
 AC_MSG_RESULT([$_efl_enable_coverage])
 
@@ -57,8 +57,10 @@ AC_SUBST(EFL_COVERAGE_LIBS)
 AM_CONDITIONAL(EFL_ENABLE_COVERAGE, test "x${_efl_enable_coverage}" = "xyes")
 
 if test "x${_efl_enable_coverage}" = "xyes" ; then
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 else
-   ifelse([$3], , :, [$3])
+   m4_default([$3], [:])
 fi
 ])
+
+dnl End of efl_coverage.m4
diff --git a/m4/efl_cpu.m4 b/m4/efl_cpu.m4
index 28ee5a5..ab047c0 100644
--- a/m4/efl_cpu.m4
+++ b/m4/efl_cpu.m4
@@ -9,11 +9,10 @@ dnl Define EFL_HAVE_MMX
 
 AC_DEFUN([EFL_CHECK_CPU_MMX],
 [
-
 dnl configure option
 
 AC_ARG_ENABLE([cpu-mmx],
-   [AC_HELP_STRING([--enable-cpu-mmx], [enable mmx code @<:@default=yes@:>@])],
+   [AC_HELP_STRING([--disable-cpu-mmx], [disable mmx code @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_cpu_mmx="yes"
@@ -21,8 +20,8 @@ AC_ARG_ENABLE([cpu-mmx],
        _efl_enable_cpu_mmx="no"
     fi
    ],
-   [_efl_enable_cpu_mmx="yes"]
-)
+   [_efl_enable_cpu_mmx="yes"])
+
 AC_MSG_CHECKING([whether to build mmx code])
 AC_MSG_RESULT([${_efl_enable_cpu_mmx}])
 
@@ -30,42 +29,49 @@ dnl check if the CPU is supporting MMX instruction sets
 
 _efl_build_cpu_mmx="no"
 if test "x${_efl_enable_cpu_mmx}" = "xyes" ; then
-case $host_cpu in
-  i*86)
-    _efl_build_cpu_mmx="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_mmx="yes"
-    ;;
-esac
+   case $host_cpu in
+      i*86 | x86_64)
+         _efl_build_cpu_mmx="yes"
+         ;;
+   esac
 fi
 
-dnl check if the compiler supports -mmmx
+AC_MSG_CHECKING([whether mmx instructions set is available])
+AC_MSG_RESULT([${_efl_build_cpu_mmx}])
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-mmmx"
-AC_LANG_PUSH([C])
+dnl check if the compiler supports -mmmx
 
-AC_COMPILE_IFELSE(
-   [AC_LANG_PROGRAM([[]],
-                    [[]])
-   ],
-   [EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -mmmx"]
-)
+if test "x${_efl_build_cpu_mmx}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-mmmx"
+   AC_LANG_PUSH([C])
 
-AC_LANG_POP([C])
-CFLAGS=${SAVE_CFLAGS}
+   AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM([[]],
+                       [[]])
+      ],
+      [
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -mmmx"],
+      [have_linker_option="no"])
+
+   AC_LANG_POP([C])
+   CFLAGS=${SAVE_CFLAGS}
+
+   AC_MSG_CHECKING([whether mmx linker option is supported])
+   AC_MSG_RESULT([${have_linker_option}])
+fi
 
 AC_SUBST(EFL_SIMD_FLAGS)
 
 if test "x${_efl_build_cpu_mmx}" = "xyes" ; then
-   AC_DEFINE(EFL_HAVE_MMX, 1, [Define to mention that MMX is supported])
+   AC_DEFINE([EFL_HAVE_MMX], [1], [Define to mention that MMX is supported])
 fi
 
 if test "x${_efl_build_cpu_mmx}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
 
@@ -75,11 +81,10 @@ dnl Define EFL_HAVE_SSE
 
 AC_DEFUN([EFL_CHECK_CPU_SSE],
 [
-
 dnl configure option
 
 AC_ARG_ENABLE([cpu-sse],
-   [AC_HELP_STRING([--enable-cpu-sse], [enable sse code @<:@default=yes@:>@])],
+   [AC_HELP_STRING([--disable-cpu-sse], [disable sse code @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_cpu_sse="yes"
@@ -87,8 +92,8 @@ AC_ARG_ENABLE([cpu-sse],
        _efl_enable_cpu_sse="no"
     fi
    ],
-   [_efl_enable_cpu_sse="yes"]
-)
+   [_efl_enable_cpu_sse="yes"])
+
 AC_MSG_CHECKING([whether to build sse code])
 AC_MSG_RESULT([${_efl_enable_cpu_sse}])
 
@@ -96,42 +101,50 @@ dnl check if the CPU is supporting SSE instruction sets
 
 _efl_build_cpu_sse="no"
 if test "x${_efl_enable_cpu_sse}" = "xyes" ; then
-case $host_cpu in
-  i*86)
-    _efl_build_cpu_sse="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_sse="yes"
-    ;;
-esac
+   case $host_cpu in
+      i*86 | x86_64)
+         _efl_build_cpu_sse="yes"
+         ;;
+   esac
 fi
 
-dnl check if the compiler supports -msse
+AC_MSG_CHECKING([whether sse instructions set is available])
+AC_MSG_RESULT([${_efl_build_cpu_sse}])
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-msse"
-AC_LANG_PUSH([C])
+dnl check if the compiler supports -msse
 
-AC_COMPILE_IFELSE(
-   [AC_LANG_PROGRAM([[]],
-                    [[]])
-   ],
-   [EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse"]
-)
+if test "x${_efl_build_cpu_sse}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-msse"
+   AC_LANG_PUSH([C])
 
-AC_LANG_POP([C])
-CFLAGS=${SAVE_CFLAGS}
+   AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM([[]],
+                       [[]])
+      ],
+      [
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse"
+      ],
+      [have_linker_option="no"])
+
+   AC_LANG_POP([C])
+   CFLAGS=${SAVE_CFLAGS}
+
+   AC_MSG_CHECKING([whether sse linker option is supported])
+   AC_MSG_RESULT([${have_linker_option}])
+fi
 
 AC_SUBST(EFL_SIMD_FLAGS)
 
 if test "x${_efl_build_cpu_sse}" = "xyes" ; then
-   AC_DEFINE(EFL_HAVE_SSE, 1, [Define to mention that SSE is supported])
+   AC_DEFINE([EFL_HAVE_SSE], [1], [Define to mention that SSE is supported])
 fi
 
 if test "x${_efl_build_cpu_sse}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
 
@@ -145,7 +158,7 @@ AC_DEFUN([EFL_CHECK_CPU_SSE2],
 dnl configure option
 
 AC_ARG_ENABLE([cpu-sse2],
-   [AC_HELP_STRING([--enable-cpu-sse2], [enable sse2 code @<:@default=yes@:>@])],
+   [AC_HELP_STRING([--disable-cpu-sse2], [disable sse2 code @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_cpu_sse2="yes"
@@ -153,8 +166,8 @@ AC_ARG_ENABLE([cpu-sse2],
        _efl_enable_cpu_sse2="no"
     fi
    ],
-   [_efl_enable_cpu_sse2="yes"]
-)
+   [_efl_enable_cpu_sse2="yes"])
+
 AC_MSG_CHECKING([whether to build sse2 code])
 AC_MSG_RESULT([${_efl_enable_cpu_sse2}])
 
@@ -162,42 +175,50 @@ dnl check if the CPU is supporting SSE2 instruction sets
 
 _efl_build_cpu_sse2="no"
 if test "x${_efl_enable_cpu_sse2}" = "xyes" ; then
-case $host_cpu in
-  i686)
-    _efl_build_cpu_sse2="yes"
-    ;;
-  x86_64)
-    _efl_build_cpu_sse2="yes"
-    ;;
-esac
+   case $host_cpu in
+      i686 | x86_64)
+         _efl_build_cpu_sse2="yes"
+         ;;
+   esac
 fi
 
-dnl check if the compiler supports -msse2
+AC_MSG_CHECKING([whether sse2 instructions set is available])
+AC_MSG_RESULT([${_efl_build_cpu_sse2}])
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-msse2"
-AC_LANG_PUSH([C])
+dnl check if the compiler supports -msse2
 
-AC_COMPILE_IFELSE(
-   [AC_LANG_PROGRAM([[]],
-                    [[]])
-   ],
-   [EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse2"]
-)
+if test "x${_efl_build_cpu_sse2}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-msse2"
+   AC_LANG_PUSH([C])
 
-AC_LANG_POP([C])
-CFLAGS=${SAVE_CFLAGS}
+   AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM([[]],
+                       [[]])
+      ],
+      [
+       have_linker_option="yes"
+       EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} -msse2"
+      ],
+      [have_linker_option="no"])
+
+   AC_LANG_POP([C])
+   CFLAGS=${SAVE_CFLAGS}
+
+   AC_MSG_CHECKING([whether sse2 linker option is supported])
+   AC_MSG_RESULT([${have_linker_option}])
+fi
 
 AC_SUBST(EFL_SIMD_FLAGS)
 
 if test "x${_efl_build_cpu_sse2}" = "xyes" ; then
-   AC_DEFINE(EFL_HAVE_SSE2, 1, [Define to mention that SSE2 is supported])
+   AC_DEFINE([EFL_HAVE_SSE2], [1], [Define to mention that SSE2 is supported])
 fi
 
 if test "x${_efl_build_cpu_sse2}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
 
@@ -212,7 +233,7 @@ AC_DEFUN([EFL_CHECK_CPU_ALTIVEC],
 dnl configure option
 
 AC_ARG_ENABLE([cpu-altivec],
-   [AC_HELP_STRING([--enable-cpu-altivec], [enable altivec code @<:@default=yes@:>@])],
+   [AC_HELP_STRING([--disable-cpu-altivec], [disable altivec code @<:@default=enabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_cpu_altivec="yes"
@@ -229,32 +250,24 @@ dnl check if the CPU is supporting ALTIVEC instruction sets
 
 _efl_build_cpu_altivec="no"
 if test "x${_efl_enable_cpu_altivec}" = "xyes" ; then
-case $host_cpu in
-  *power* | *ppc*)
-    _efl_build_cpu_altivec="yes"
-    ;;
-esac
+   case $host_cpu in
+      *power* | *ppc*)
+         _efl_build_cpu_altivec="yes"
+         ;;
+   esac
 fi
 
+AC_MSG_CHECKING([whether altivec instructions set is available])
+AC_MSG_RESULT([${_efl_build_cpu_altivec}])
+
 dnl check if the compiler supports -faltivec or -maltivec and
 dnl if altivec.h is available.
 
-SAVE_CFLAGS=${CFLAGS}
-CFLAGS="-faltivec"
-AC_LANG_PUSH([C])
-
-AC_COMPILE_IFELSE(
-   [AC_LANG_PROGRAM([[
-#include <altivec.h>
-                    ]],
-                    [[]])],
-   [_efl_have_faltivec="yes"
-    _efl_altivec_flag="-faltivec"],
-   [_efl_have_faltivec="no"]
-)
-
-if test "x${_efl_have_faltivec}" = "xno" ; then
-   CFLAGS="-maltivec"
+_efl_have_faltivec="no"
+if test "x${_efl_build_cpu_altivec}" = "xyes" ; then
+   SAVE_CFLAGS=${CFLAGS}
+   CFLAGS="-faltivec"
+   AC_LANG_PUSH([C])
 
    AC_COMPILE_IFELSE(
       [AC_LANG_PROGRAM([[
@@ -262,27 +275,88 @@ if test "x${_efl_have_faltivec}" = "xno" ; then
                        ]],
                        [[]])],
       [_efl_have_faltivec="yes"
-       _efl_altivec_flag="-maltivec"],
-      [_efl_have_faltivec="no"]
-   )
-fi
+       _efl_altivec_flag="-faltivec"],
+      [_efl_have_faltivec="no"])
 
-AC_MSG_CHECKING([whether altivec code is supported])
-AC_MSG_RESULT([${_efl_have_faltivec}])
+   if test "x${_efl_have_faltivec}" = "xno" ; then
+      CFLAGS="-maltivec"
 
-AC_LANG_POP([C])
-CFLAGS=${SAVE_CFLAGS}
+      AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM([[
+#include <altivec.h>
+                          ]],
+                          [[]])],
+         [_efl_have_faltivec="yes"
+          _efl_altivec_flag="-maltivec"],
+         [_efl_have_faltivec="no"])
+   fi
+
+   AC_LANG_POP([C])
+   CFLAGS=${SAVE_CFLAGS}
+
+   AC_MSG_CHECKING([whether altivec linker option is supported])
+   AC_MSG_RESULT([${_efl_have_faltivec}])
+fi
 
 EFL_SIMD_FLAGS="${EFL_SIMD_FLAGS} ${_efl_altivec_flag}"
 AC_SUBST(EFL_SIMD_FLAGS)
 
 if test "x${_efl_have_faltivec}" = "xyes" ; then
-   AC_DEFINE(EFL_HAVE_ALTIVEC, 1, [Define to mention that ALTIVEC is supported])
+   AC_DEFINE([EFL_HAVE_ALTIVEC], [1], [Define to mention that ALTIVEC is supported])
 fi
 
 if test "x${_efl_have_faltivec}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
+
+dnl Usage: EFL_CHECK_CPU_NEON([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Add -mneon to EFL_SIMD_FLAGS if the compiler supports it and call AC_SUBST(EFL_SIMD_FLAGS)
+dnl Define EFL_HAVE_NEON
+
+AC_DEFUN([EFL_CHECK_CPU_NEON],
+[
+dnl configure option
+
+AC_ARG_ENABLE([cpu-neon],
+   [AC_HELP_STRING([--disable-cpu-neon], [disable neon code @<:@default=enabled@:>@])],
+   [
+    if test "x${enableval}" = "xyes" ; then
+       _efl_enable_cpu_neon="yes"
+    else
+       _efl_enable_cpu_neon="no"
+    fi
+   ],
+   [_efl_enable_cpu_neon="yes"])
+
+AC_MSG_CHECKING([whether to build neon code])
+AC_MSG_RESULT([${_efl_enable_cpu_neon}])
+
+dnl check if the CPU is supporting NEON instruction sets
+
+_efl_build_cpu_neon="no"
+if test "x${_efl_enable_cpu_neon}" = "xyes" ; then
+   case $host_cpu in
+      armv7*)
+         _efl_build_cpu_neon="yes"
+         ;;
+   esac
+fi
+
+AC_MSG_CHECKING([whether neon instructions set is available])
+AC_MSG_RESULT([${_efl_build_cpu_neon}])
+
+if test "x${_efl_build_cpu_neon}" = "xyes" ; then
+   AC_DEFINE([EFL_HAVE_NEON], [1], [Define to mention that NEON is supported])
+fi
+
+if test "x${_efl_build_cpu_neon}" = "xyes" ; then
+   m4_default([$1], [:])
+else
+   m4_default([$2], [:])
+fi
+])
+
+dnl End of efl_cpu.m4
diff --git a/m4/efl_doxygen.m4 b/m4/efl_doxygen.m4
index dd6bc3e..d83ed68 100644
--- a/m4/efl_doxygen.m4
+++ b/m4/efl_doxygen.m4
@@ -32,9 +32,7 @@ AC_MSG_RESULT([${efl_enable_doc}])
 
 if test "x${efl_enable_doc}" = "xyes" ; then
 
-dnl
 dnl Specify the file name, without path
-dnl
 
    efl_doxygen="doxygen"
 
@@ -42,9 +40,9 @@ dnl
       [AC_HELP_STRING(
           [--with-doxygen=FILE],
           [doxygen program to use @<:@default=doxygen@:>@])],
-dnl
+
 dnl Check the given doxygen program.
-dnl
+
       [efl_doxygen=${withval}
        AC_CHECK_PROG([efl_have_doxygen],
           [${efl_doxygen}],
@@ -96,4 +94,4 @@ fi
 
 ])
 
-dnl End of doxygen.m4
+dnl End of efl_doxygen.m4
diff --git a/m4/efl_tests.m4 b/m4/efl_tests.m4
index 3478b54..98d11bb 100644
--- a/m4/efl_tests.m4
+++ b/m4/efl_tests.m4
@@ -13,7 +13,7 @@ AC_DEFUN([EFL_CHECK_TESTS],
 dnl configure option
 
 AC_ARG_ENABLE([tests],
-   [AC_HELP_STRING([--enable-tests], [enable tests @<:@default=no@:>@])],
+   [AC_HELP_STRING([--enable-tests], [enable tests @<:@default=disabled@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
        _efl_enable_tests="yes"
@@ -21,24 +21,27 @@ AC_ARG_ENABLE([tests],
        _efl_enable_tests="no"
     fi
    ],
-   [_efl_enable_tests="no"]
-)
+   [_efl_enable_tests="no"])
+
 AC_MSG_CHECKING([whether tests are built])
 AC_MSG_RESULT([${_efl_enable_tests}])
 
+AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
 if test "x${_efl_enable_tests}" = "xyes" ; then
    PKG_CHECK_MODULES([CHECK],
       [check >= 0.9.5],
       [dummy="yes"],
-      [_efl_enable_tests="no"]
-   )
+      [_efl_enable_tests="no"])
 fi
 
 AM_CONDITIONAL(EFL_ENABLE_TESTS, test "x${_efl_enable_tests}" = "xyes")
 
 if test "x${_efl_enable_tests}" = "xyes" ; then
-   ifelse([$1], , :, [$1])
+   m4_default([$1], [:])
 else
-   ifelse([$2], , :, [$2])
+   m4_default([$2], [:])
 fi
 ])
+
+dnl End of efl_tests.m4
diff --git a/m4/eina_bench.m4 b/m4/eina_bench.m4
new file mode 100644
index 0000000..c83a462
--- /dev/null
+++ b/m4/eina_bench.m4
@@ -0,0 +1,35 @@
+dnl use: EINA_BENCH_MODULE(foo-bar, have_bench, pkg_file [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([EINA_BENCH_MODULE],
+[
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+
+want_module="$2"
+have_module="no"
+
+AC_ARG_ENABLE([$1],
+   [AC_HELP_STRING([--disable-benchmark-$1], [disable benchmarking against ]DOWN[ @<:@default=yes@:>@])],
+   [
+    if test "x${enableval}" = "xyes" ; then
+       enable_module="yes"
+    else
+       enable_module="no"
+    fi
+   ],
+   [enable_module="yes"])
+
+if test "x${enable_module}" = "xyes" -a "x${want_module}" = "xyes"; then
+   PKG_CHECK_MODULES([]UP[], [$3], [have_module="yes"], [have_module="no"])
+fi
+
+AM_CONDITIONAL([EINA_HAVE_]UP[], [test "x${have_module}" = "xyes"])
+
+if test "x${have_module}" = "xyes" ; then
+   ifelse([$4], , :, [$4])
+else
+   ifelse([$5], , :, [$5])
+fi
+
+m4_popdef([UP])
+m4_popdef([DOWN])
+])
diff --git a/m4/eina_check.m4 b/m4/eina_check.m4
index 38eb567..e0361cc 100644
--- a/m4/eina_check.m4
+++ b/m4/eina_check.m4
@@ -1,29 +1,60 @@
-dnl use: EINA_CHECK_STATIC(foo-bar, description)
-AC_DEFUN([EINA_CHECK_STATIC],
+dnl use: EINA_CHECK_MODULE(foo-bar, have_dependency, description)
+AC_DEFUN([EINA_CHECK_MODULE],
 [
-pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
-pushdef([DOWN], translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
 
-AC_ARG_ENABLE([static-$1],
-   [AC_HELP_STRING([--enable-static-$1], [enable static build of $2 @<:@default=no@:>@])],
+want_module="$2"
+
+AC_ARG_ENABLE([$1],
+   [AC_HELP_STRING([--enable-$1], [enable build of $3 @<:@default=yes@:>@])],
    [
     if test "x${enableval}" = "xyes" ; then
-       enable_static_[]DOWN="yes"
+       enable_module="yes"
     else
-       enable_static_[]DOWN="no"
+       if test "x${enableval}" = "xstatic" ; then
+          enable_module="static"
+       else
+          enable_module="no"
+       fi
     fi
    ],
-   [enable_static_[]DOWN="no"]
-)
-AC_MSG_CHECKING([whether $2 is statically build])
-AC_MSG_RESULT([${enable_static_[]DOWN}])
+   [enable_module="yes"])
+
+have_module="no"
+if test "x${enable_module}" = "xyes" -o "x${enable_module}" = "xstatic" ; then
+   have_module="yes"
+fi
+
+AC_MSG_CHECKING([whether to enable $3 built])
+AC_MSG_RESULT([${have_module}])
+
+build_module="no"
+if test "x${want_module}" = "xyes" -a "x${have_module}" = "xyes" ; then
+   build_module="yes"
+fi
 
-AM_CONDITIONAL(EINA_STATIC_BUILD_[]UP, test "x${enable_static_[]DOWN}" = "xyes")
+AC_MSG_CHECKING([whether to build $3])
+AC_MSG_RESULT([${build_module}])
 
-if test "x${enable_static_[]DOWN}" = "xyes" ; then
+static_module="no"
+if test "x${want_module}" = "xyes" -a "x${enable_module}" = "xstatic" ; then
+   static_module="yes"
+fi
+
+AM_CONDITIONAL(EINA_BUILD_[]UP, [test "x${build_module}" = "xyes"])
+AM_CONDITIONAL(EINA_STATIC_BUILD_[]UP, [test "x${static_module}" = "xyes"])
+
+if test "x${static_module}" = "xyes" ; then
    AC_DEFINE(EINA_STATIC_BUILD_[]UP, 1, [Set to 1 if $2 is statically built])
+   have_static_module="yes"
+fi
+
+enable_[]DOWN="no"
+if test "x${want_module}" = "xyes" ; then
+   enable_[]DOWN=${enable_module}
 fi
 
-popdef([UP])
-popdef([DOWN])
-])
\ No newline at end of file
+m4_popdef([UP])
+m4_popdef([DOWN])
+])
diff --git a/src/Makefile.in b/src/Makefile.in
index 2124f69..e116fbd 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -39,10 +39,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -100,6 +100,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
diff --git a/src/include/Eina.h b/src/include/Eina.h
index 96ac93d..997e0d4 100644
--- a/src/include/Eina.h
+++ b/src/include/Eina.h
@@ -36,6 +36,7 @@
  *       <li> @ref eina_hash_subsubsec
  *       <li> @ref eina_inlist_subsubsec
  *       <li> @ref eina_rbtree_subsubsec
+ *       <li> @ref eina_trash_subsubsec
  *       <li> @ref eina_list_subsubsec
  *     </ul>
  *     <li> @ref eina_stringshare_subsec
@@ -92,6 +93,10 @@
  *
  * @subsubsection eina_rbtree_subsubsec Inlined Red Black Tree
  *
+ * @subsubsection eina_trash_subsubsec Trash
+ *
+ * @subsubsection eina_trash_subsubsec Trash
+ *
  * @subsubsection eina_list_subsubsec List
  *
  * @subsection eina_stringshare_subsec Shared String
@@ -145,6 +150,7 @@ extern "C" {
 #include "eina_file.h"
 #include "eina_list.h"
 #include "eina_hash.h"
+#include "eina_trash.h"
 #include "eina_lalloc.h"
 #include "eina_module.h"
 #include "eina_mempool.h"
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index 64b5782..c02a04d 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -28,6 +28,8 @@ eina_benchmark.h \
 eina_inline_rbtree.x \
 eina_inline_mempool.x \
 eina_inline_rectangle.x \
+eina_inline_trash.x \
+eina_trash.h \
 eina_iterator.h \
 eina_main.h \
 eina_cpu.h \
diff --git a/src/include/Makefile.in b/src/include/Makefile.in
index 47584ac..c13c179 100644
--- a/src/include/Makefile.in
+++ b/src/include/Makefile.in
@@ -42,10 +42,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -103,6 +103,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -239,6 +240,8 @@ eina_benchmark.h \
 eina_inline_rbtree.x \
 eina_inline_mempool.x \
 eina_inline_rectangle.x \
+eina_inline_trash.x \
+eina_trash.h \
 eina_iterator.h \
 eina_main.h \
 eina_cpu.h \
diff --git a/src/include/eina_accessor.h b/src/include/eina_accessor.h
index 6539bbe..55952d4 100644
--- a/src/include/eina_accessor.h
+++ b/src/include/eina_accessor.h
@@ -25,6 +25,12 @@
 #include "eina_magic.h"
 
 /**
+ * @addtogroup Eina_Content_Access_Group Content Access
+ *
+ * @{
+ */
+
+/**
  * @defgroup Eina_Accessor_Group Accessor Functions
  *
  * @{
@@ -71,11 +77,13 @@ EAPI void eina_accessor_over           (Eina_Accessor *accessor,
  * @brief Macro to iterate over all elements easily.
  *
  * @param accessor The accessor to use.
+ * @param counter A counter used by eina_accessor_data_get() when
+ * iterating over the container.
  * @param data Where to store * data, must be a pointer support getting
- *        its address since * eina_accessor_data_get() requires a pointer
- *        to pointer!
+ * its address since * eina_accessor_data_get() requires a pointer to
+ * pointer!
  *
- * This macro is a convenient way to loop over all elements in an
+ * This macro allows a convenient way to loop over all elements in an
  * accessor, very similar to EINA_LIST_FOREACH().
  *
  * This macro can be used for freeing the data of a list, like in the
@@ -119,4 +127,8 @@ EAPI void eina_accessor_over           (Eina_Accessor *accessor,
  * @}
  */
 
+/**
+ * @}
+ */
+
 #endif
diff --git a/src/include/eina_counter.h b/src/include/eina_counter.h
index b893687..8bb5093 100644
--- a/src/include/eina_counter.h
+++ b/src/include/eina_counter.h
@@ -42,8 +42,8 @@ typedef struct _Eina_Counter Eina_Counter;
 EAPI int eina_counter_init(void);
 EAPI int eina_counter_shutdown(void);
 
-EAPI Eina_Counter *eina_counter_add(const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
-EAPI void eina_counter_delete(Eina_Counter *counter) EINA_ARG_NONNULL(1);
+EAPI Eina_Counter *eina_counter_new(const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
+EAPI void eina_counter_free(Eina_Counter *counter) EINA_ARG_NONNULL(1);
 
 EAPI void eina_counter_start(Eina_Counter *counter) EINA_ARG_NONNULL(1);
 EAPI void eina_counter_stop(Eina_Counter *counter, int specimen) EINA_ARG_NONNULL(1);
diff --git a/src/include/eina_file.h b/src/include/eina_file.h
index 7210904..7011781 100644
--- a/src/include/eina_file.h
+++ b/src/include/eina_file.h
@@ -29,7 +29,7 @@
  */
 
 /**
- * @defgroup Eina_File_Group Memory File
+ * @defgroup Eina_File_Group File
  *
  * @{
  */
diff --git a/src/include/eina_hash.h b/src/include/eina_hash.h
index fed6f94..f343f5a 100644
--- a/src/include/eina_hash.h
+++ b/src/include/eina_hash.h
@@ -74,6 +74,7 @@ EAPI Eina_Hash * eina_hash_string_small_new(Eina_Free_Cb data_free_cb);
 EAPI Eina_Hash * eina_hash_int32_new(Eina_Free_Cb data_free_cb);
 EAPI Eina_Hash * eina_hash_int64_new(Eina_Free_Cb data_free_cb);
 EAPI Eina_Hash * eina_hash_pointer_new(Eina_Free_Cb data_free_cb);
+EAPI Eina_Hash * eina_hash_stringshared_new(Eina_Free_Cb data_free_cb);
 
 EAPI Eina_Bool   eina_hash_add(Eina_Hash *hash, const void *key, const void *data) EINA_ARG_NONNULL(1, 2, 3);
 EAPI Eina_Bool   eina_hash_direct_add(Eina_Hash *hash, const void *key, const void *data) EINA_ARG_NONNULL(1, 2, 3);
@@ -119,6 +120,7 @@ EAPI int eina_hash_superfast(const char *key, int len) EINA_ARG_NONNULL(1);
 
 /* Hash function first reported by dan bernstein many years ago in comp.lang.c */
 static inline int eina_hash_djb2(const char *key, int len) EINA_ARG_NONNULL(1);
+static inline int eina_hash_djb2_len(const char *key, int *plen) EINA_ARG_NONNULL(1, 2);
 
 /* Hash function from http://www.concentric.net/~Ttwang/tech/inthash.htm */
 static inline int eina_hash_int32(const unsigned int *pkey, int len) EINA_ARG_NONNULL(1);
diff --git a/src/include/eina_inline_array.x b/src/include/eina_inline_array.x
index f13b9f1..a9a2ba3 100644
--- a/src/include/eina_inline_array.x
+++ b/src/include/eina_inline_array.x
@@ -109,8 +109,8 @@ eina_array_data_get(const Eina_Array *array, unsigned int index)
  * @brief Return the data at a given position in an array.
  *
  * @param array The array.
- * @param index The potition of the data to retrieve.
- * @return The retrieved data.
+ * @param index The potition of the data to set.
+ * @param data The data to set.
  *
  * This function returns the data at the position @p index in @p
  * array. For performance reasons, there is no check of @p array or @p
@@ -123,7 +123,7 @@ eina_array_data_set(const Eina_Array *array, unsigned int index, const void *dat
 }
 
 /**
- * @brief Return the number of elements in the array.
+ * @brief Return the number of elements in an array.
  *
  * @param array The array.
  * @return The number of elements.
diff --git a/src/include/eina_inline_mempool.x b/src/include/eina_inline_mempool.x
index d8ad1f3..1f4f628 100644
--- a/src/include/eina_inline_mempool.x
+++ b/src/include/eina_inline_mempool.x
@@ -45,7 +45,7 @@ eina_mempool_realloc(Eina_Mempool *mp, void *element, unsigned int size)
 }
 
 static inline void *
-eina_mempool_alloc(Eina_Mempool *mp, unsigned int size)
+eina_mempool_malloc(Eina_Mempool *mp, unsigned int size)
 {
    return mp->backend.alloc(mp->backend_data, size);
 }
diff --git a/src/include/eina_inline_trash.x b/src/include/eina_inline_trash.x
new file mode 100644
index 0000000..f3d4ff9
--- /dev/null
+++ b/src/include/eina_inline_trash.x
@@ -0,0 +1,90 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2008 Cedric Bail
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_INLINE_TRASH_X__
+#define EINA_INLINE_TRASH_X__
+
+/**
+ * @brief Initialize a trash before using it.
+ *
+ * @param trash The trash.
+ *
+ * This function just set to zero the trash to correctly
+ * initialize it.
+ *
+ * @note You can just set *trash to NULL and you will have
+ * the same result.
+ */
+static inline void
+eina_trash_init(Eina_Trash **trash)
+{
+   *trash = NULL;
+}
+
+/**
+ * @brief Push an unused pointer in the trash instead of freeing it.
+ *
+ * @param trash A pointer to an Eina_Trash.
+ * @param data An unused pointer big enougth to put a (void*).
+ *
+ * Instead of freeing a pointer and put pressure on malloc/free
+ * you can push it in a trash for a later use. This function just
+ * provide a fast way to push a now unused pointer into a trash.
+ *
+ * @note Do never use the pointer after insertion or bad things will
+ * happens.
+ *
+ * @note This trash will not resize, nor do anything with the size of
+ * the region pointed by @p data, so it's your duty to manage the size.
+ */
+static inline void
+eina_trash_push(Eina_Trash **trash, void *data)
+{
+   Eina_Trash *tmp;
+
+   tmp = (Eina_Trash *)data;
+   tmp->next = *trash;
+   *trash = tmp;
+}
+
+/**
+ * @brief Pop an available pointer from the trash if possible.
+ *
+ * @param trash A pointer to an Eina_Trash.
+ *
+ * Instead of calling malloc, and putting pressure on malloc/free
+ * you can recycle the content of the trash, if it's not empty.
+ *
+ * @note This trash will not resize, nor do anything with the size of
+ * the region pointed by pointer inside the trash, so it's your duty
+ * to manage the size of the returned pointer.
+ */
+static inline void*
+eina_trash_pop(Eina_Trash **trash)
+{
+   void *tmp;
+
+   tmp = *trash;
+
+   if (*trash != NULL)
+     *trash = (*trash)->next;
+
+   return tmp;
+}
+
+#endif
diff --git a/src/include/eina_inlist.h b/src/include/eina_inlist.h
index 7a010be..4830b85 100644
--- a/src/include/eina_inlist.h
+++ b/src/include/eina_inlist.h
@@ -22,9 +22,23 @@
 #include "eina_types.h"
 #include "eina_iterator.h"
 #include "eina_accessor.h"
+#include <stddef.h>
 
 /**
- * @defgroup Inline_List_Group Inline List
+ * @addtogroup Eina_Data_Types_Group Data Types
+ *
+ * @{
+ */
+
+/**
+ * @addtogroup Eina_Containers_Group Containers
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Inline_List_Group Inline List
+ *
  * @{
  */
 
@@ -56,6 +70,16 @@ EAPI Eina_Accessor *eina_inlist_accessor_new(const Eina_Inlist *in_list) EINA_MA
 #define EINA_INLIST_FOREACH(list, l) for (l = (void*)list; l; l = (void*)(l->__in_list.next))
 #define EINA_INLIST_REVERSE_FOREACH(list, l) for (l = (list ? (void*)(list->last) : NULL); l; l = (void*)(l->__in_list.prev))
 
-/** @} */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
 
 #endif /*EINA_INLIST_H_*/
diff --git a/src/include/eina_iterator.h b/src/include/eina_iterator.h
index 7309b2b..71605ec 100644
--- a/src/include/eina_iterator.h
+++ b/src/include/eina_iterator.h
@@ -25,6 +25,12 @@
 #include "eina_magic.h"
 
 /**
+ * @addtogroup Eina_Content_Access_Group Content Access
+ *
+ * @{
+ */
+
+/**
  * @defgroup Eina_Iterator_Group Iterator Functions
  *
  * @{
@@ -112,4 +118,8 @@ EAPI void eina_iterator_foreach        (Eina_Iterator *iterator,
  * @}
  */
 
+/**
+ * @}
+ */
+
 #endif
diff --git a/src/include/eina_lalloc.h b/src/include/eina_lalloc.h
index 04278c6..df0fbd7 100644
--- a/src/include/eina_lalloc.h
+++ b/src/include/eina_lalloc.h
@@ -41,7 +41,7 @@ typedef void (*Eina_Lalloc_Free) (void *user_data);
 typedef struct _Eina_Lalloc Eina_Lalloc;
 
 EAPI Eina_Lalloc *eina_lalloc_new(void *data, Eina_Lalloc_Alloc alloc_cb, Eina_Lalloc_Free free_cb, int num_init) EINA_ARG_NONNULL(2, 3);
-EAPI void eina_lalloc_delete(Eina_Lalloc *a) EINA_ARG_NONNULL(1);
+EAPI void eina_lalloc_free(Eina_Lalloc *a) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_lalloc_elements_add(Eina_Lalloc *a, int num) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_lalloc_element_add(Eina_Lalloc *a) EINA_ARG_NONNULL(1);
 
diff --git a/src/include/eina_list.h b/src/include/eina_list.h
index fc52fdd..5b23b0b 100644
--- a/src/include/eina_list.h
+++ b/src/include/eina_list.h
@@ -129,7 +129,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  * data of each element of the list. @p l is an #Eina_List that is
  * used as counter.
  *
- * This macro can be used for freeing the data of alist, like in
+ * This macro can be used for freeing the data of a list, like in
  * the following example:
  *
  * @code
@@ -148,7 +148,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  *
  * @note this example is not optimal algorithm to release a list since
  *    it will walk the list twice, but it serves as an example. For
- *    optimized version use EINA_LIST_FREE()
+ *    optimized version use EINA_LIST_FREE().
  *
  * @warning do not delete list nodes, specially the current node,
  *    while iterating. If you wish to do so, use
@@ -169,7 +169,7 @@ EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list) EINA_MALLOC EI
  * the data of each element of the list. @p l is an #Eina_List that is
  * used as counter.
  *
- * This macro can be used for freeing the data of alist, like in
+ * This macro can be used for freeing the data of a list, like in
  * the following example:
  *
  * @code
diff --git a/src/include/eina_magic.h b/src/include/eina_magic.h
index 4dd34ce..f58f16b 100644
--- a/src/include/eina_magic.h
+++ b/src/include/eina_magic.h
@@ -23,6 +23,18 @@
 #include "eina_config.h"
 #include "eina_types.h"
 
+/**
+ * @addtogroup Eina_Tools_Group Tools
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Magic_Group Magic
+ *
+ * @{
+ */
+
 
 EAPI int eina_magic_string_init(void);
 EAPI int eina_magic_string_shutdown(void);
@@ -30,14 +42,74 @@ EAPI int eina_magic_string_shutdown(void);
 
 #ifdef EINA_MAGIC_DEBUG
 
+/**
+ * @def EINA_MAGIC_NONE
+ * Random value for specifying that a structure using the magic
+ * feature has already been freed. It is used by eina_agic_fail().
+ *
+ * If the magic feature of Eina is disabled, #EINA_MAGIC_NONE is just
+ * @c 0.
+ */
 #define EINA_MAGIC_NONE            0x1234fedc
 
+/**
+ * @def EINA_MAGIC
+ * Declaration of a variable of type #Eina_Magic. To put in a structure
+ * when one wants to use the magic feature of Eina with the functions
+ * of that structure, like that:
+ *
+ * @code
+ * struct Foo
+ * {
+ *    int i;
+ *
+ *    EINA_MAGIC
+ * };
+ * @endcode
+ *
+ * If the magic feature of Eina is disabled, #EINA_MAGIC does nothing.
+ */
 #define EINA_MAGIC	Eina_Magic __magic;
 
+/**
+ * @def EINA_MAGIC_SET(d, m)
+ * Set the magic number of @p d to @p m. @p d must be a valid pointer
+ * to a structure holding an Eina magic number declaration. Use
+ * #EINA_MAGIC to add such declaration.
+ *
+ * If the magic feature of Eina is disabled, #EINA_MAGIC_CHECK is just
+ * the value @c 0.
+ */
 #define EINA_MAGIC_SET(d, m)       (d)->__magic = (m)
+
+/**
+ * @def EINA_MAGIC_CHECK(d, m)
+ * Test if @p d is @c NULL or not, and if not @c NULL, if
+ * @p d->__eina_magic is equal to @p m. @p d must be a structure that
+ * holds an Eina magic number declaration. Use #EINA_MAGIC to add such
+ * declaration.
+ *
+ * If the magic feature of Eina is disabled, #EINA_MAGIC_CHECK is just
+ * the value @c 1.
+ */
 #define EINA_MAGIC_CHECK(d, m)     ((d) && ((d)->__magic == (m)))
+
+/**
+ * @def EINA_MAGIC_FAIL(d, m)
+ * Call eina_magic_fail() with the parameters @p d, @p d->__magic, @p
+ * m, __FILE__, __FUNCTION__ and __LINE__. @p d must be a structure that
+ * holds an Eina magic number declaration. Use #EINA_MAGIC to add such
+ * declaration.
+ *
+ * If the magic feature of Eina is disabled, #EINA_MAGIC_FAIL does
+ * nothing.
+ */
 #define EINA_MAGIC_FAIL(d, m)      eina_magic_fail((void*)(d), (d) ? (d)->__magic : 0, (m), __FILE__, __FUNCTION__, __LINE__);
 
+/**
+ * @typedef Eina_Magic
+ * An abstract type for a magic number.
+ */
 typedef unsigned int               Eina_Magic;
 
 EAPI const char* eina_magic_string_get(Eina_Magic magic) EINA_PURE EINA_WARN_UNUSED_RESULT;
@@ -47,6 +119,10 @@ EAPI void eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m,
 
 #else
 
+/**
+ * @cond LOCAL
+ */
+
 #define EINA_MAGIC_NONE            ((void) 0)
 #define EINA_MAGIC
 #define EINA_MAGIC_SET(d, m)       ((void) 0)
@@ -57,6 +133,18 @@ EAPI void eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m,
 #define eina_magic_string_set(Magic, Magic_Name)      ((void) 0)
 #define eina_magic_fail(d, m, req_m, file, fnx, line) ((void) 0)
 
+/**
+ * @endcond
+ */
+
 #endif
 
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
 #endif /* EINA_MAGIC_H_ */
diff --git a/src/include/eina_main.h b/src/include/eina_main.h
index d33071f..c504bbb 100644
--- a/src/include/eina_main.h
+++ b/src/include/eina_main.h
@@ -19,8 +19,28 @@
 #ifndef EINA_MAIN_H_
 #define EINA_MAIN_H_
 
+/**
+ * @addtogroup Eina_Core_Group Core
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Main_Group Main
+ *
+ * @{
+ */
+
 EAPI int eina_init(void);
 
 EAPI int eina_shutdown(void);
 
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
 #endif /* EINA_MAIN_H_ */
diff --git a/src/include/eina_mempool.h b/src/include/eina_mempool.h
index 86b7b70..22d390f 100644
--- a/src/include/eina_mempool.h
+++ b/src/include/eina_mempool.h
@@ -24,10 +24,27 @@
 #include "eina_module.h"
 
 /**
- * @defgroup Memory_Pool_Group Memory Pool
+ * @addtogroup Eina_Tools_Group Tools
+ *
  * @{
  */
+
+/**
+ * @defgroup Eina_Memory_Pool_Group Memory Pool
+ *
+ * @{
+ */
+
+/**
+ * @typedef Eina_Mempool
+ * Mempool type.
+ */
 typedef struct _Eina_Mempool Eina_Mempool;
+
+/**
+ * @typedef Eina_Mempool_Backend
+ * Mempool backend type.
+ */
 typedef struct _Eina_Mempool_Backend Eina_Mempool_Backend;
 
 EAPI extern Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE;
@@ -35,11 +52,11 @@ EAPI extern Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE;
 EAPI int eina_mempool_init(void);
 EAPI int eina_mempool_shutdown(void);
 
-EAPI Eina_Mempool * eina_mempool_new(const char *module, const char *context, const char *options, ...) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
-EAPI void eina_mempool_delete(Eina_Mempool *mp) EINA_ARG_NONNULL(1);
+EAPI Eina_Mempool * eina_mempool_add(const char *module, const char *context, const char *options, ...) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
+EAPI void eina_mempool_del(Eina_Mempool *mp) EINA_ARG_NONNULL(1);
 
 static inline void * eina_mempool_realloc(Eina_Mempool *mp, void *element, unsigned int size) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
-static inline void * eina_mempool_alloc(Eina_Mempool *mp, unsigned int size) EINA_MALLOC EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
+static inline void * eina_mempool_malloc(Eina_Mempool *mp, unsigned int size) EINA_MALLOC EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
 static inline void eina_mempool_free(Eina_Mempool *mp, void *element) EINA_ARG_NONNULL(1);
 
 EAPI void eina_mempool_gc(Eina_Mempool *mp) EINA_ARG_NONNULL(1);
@@ -49,6 +66,13 @@ EAPI Eina_Bool eina_mempool_register(Eina_Mempool_Backend *be) EINA_ARG_NONNULL(
 EAPI void eina_mempool_unregister(Eina_Mempool_Backend *be) EINA_ARG_NONNULL(1);
 
 #include "eina_inline_mempool.x"
-/** @} */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
 
 #endif /* EINA_MEMPOOL_H_ */
diff --git a/src/include/eina_module.h b/src/include/eina_module.h
index 41f5c18..dfa9cbc 100644
--- a/src/include/eina_module.h
+++ b/src/include/eina_module.h
@@ -24,7 +24,14 @@
 #include "eina_error.h"
 
 /**
- * @defgroup Module_Group Module
+ * @addtogroup Eina_Tools_Group Tools
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Module_Group Module
+ *
  * @{
  */
 
@@ -44,7 +51,7 @@ EAPI int eina_module_init(void);
 EAPI int eina_module_shutdown(void);
 
 EAPI Eina_Module * eina_module_new(const char *file) EINA_MALLOC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
-EAPI Eina_Bool eina_module_delete(Eina_Module *m) EINA_ARG_NONNULL(1);
+EAPI Eina_Bool eina_module_free(Eina_Module *m) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_module_load(Eina_Module *module) EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_module_unload(Eina_Module *m) EINA_ARG_NONNULL(1);
 EAPI void *eina_module_symbol_get(Eina_Module *module, const char *symbol) EINA_PURE EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT;
@@ -56,8 +63,10 @@ EAPI char *eina_module_environment_path_get(const char *env, const char *sub_dir
 EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data) EINA_MALLOC EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT;
 EAPI void eina_module_list_load(Eina_Array *list) EINA_ARG_NONNULL(1);
 EAPI void eina_module_list_unload(Eina_Array *list) EINA_ARG_NONNULL(1);
-EAPI void eina_module_list_delete(Eina_Array *list) EINA_ARG_NONNULL(1);
+EAPI void eina_module_list_flush(Eina_Array *list) EINA_ARG_NONNULL(1);
 
-/** @} */
+/**
+ * @}
+ */
 
 #endif /*EINA_MODULE_H_*/
diff --git a/src/include/eina_rectangle.h b/src/include/eina_rectangle.h
index e2eb58c..bc47100 100644
--- a/src/include/eina_rectangle.h
+++ b/src/include/eina_rectangle.h
@@ -32,10 +32,10 @@
  */
 typedef struct _Eina_Rectangle
 {
-	int	x;
-	int	y;
-	int	w;
-	int	h;
+   int x; /**< top-left x co-ordinate of rectangle */
+   int y; /**< top-left y co-ordinate of rectangle */
+   int w; /**< width of rectangle */
+   int h; /**< height of rectangle */
 } Eina_Rectangle;
 
 typedef struct _Eina_Rectangle_Pool Eina_Rectangle_Pool;
@@ -55,16 +55,25 @@ static inline void eina_rectangle_rescale_out(const Eina_Rectangle *out, const E
 EAPI int eina_rectangle_init(void);
 EAPI int eina_rectangle_shutdown(void);
 
-EAPI Eina_Rectangle_Pool *eina_rectangle_pool_add(int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+EAPI Eina_Rectangle_Pool *eina_rectangle_pool_new(int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
 EAPI Eina_Rectangle_Pool *eina_rectangle_pool_get(Eina_Rectangle *rect) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI Eina_Bool eina_rectangle_pool_geometry_get(Eina_Rectangle_Pool *pool, int *w, int *h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
 EAPI void *eina_rectangle_pool_data_get(Eina_Rectangle_Pool *pool) EINA_PURE EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI void eina_rectangle_pool_data_set(Eina_Rectangle_Pool *pool, const void *data) EINA_ARG_NONNULL(1);
-EAPI void eina_rectangle_pool_delete(Eina_Rectangle_Pool *pool) EINA_ARG_NONNULL(1);
+EAPI void eina_rectangle_pool_free(Eina_Rectangle_Pool *pool) EINA_ARG_NONNULL(1);
 EAPI int eina_rectangle_pool_count(Eina_Rectangle_Pool *pool) EINA_PURE EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
 EAPI Eina_Rectangle *eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 EAPI void eina_rectangle_pool_release(Eina_Rectangle *rect) EINA_ARG_NONNULL(1);
 
+#define EINA_RECTANGLE_SET(Rectangle, X, Y, W, H) \
+  (Rectangle)->x = X;				  \
+  (Rectangle)->y = Y;				  \
+  (Rectangle)->w = W;				  \
+  (Rectangle)->h = H;
+
+EAPI Eina_Rectangle *eina_rectangle_new(int x, int y, int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
+EAPI void eina_rectangle_free(Eina_Rectangle *rect) EINA_ARG_NONNULL(1);
+
 #include "eina_inline_rectangle.x"
 
 /** @} */
diff --git a/src/include/eina_stringshare.h b/src/include/eina_stringshare.h
index 4670ad6..40ace4e 100644
--- a/src/include/eina_stringshare.h
+++ b/src/include/eina_stringshare.h
@@ -74,6 +74,7 @@ EAPI void eina_stringshare_del(const char *str);
 EAPI int eina_stringshare_strlen(const char *str) EINA_CONST EINA_WARN_UNUSED_RESULT;
 EAPI void eina_stringshare_dump(void);
 
+static inline Eina_Bool eina_stringshare_replace(const char **p_str, const char *news) EINA_ARG_NONNULL(1, 2);
 
 #include "eina_inline_stringshare.x"
 
diff --git a/src/include/eina_tiler.h b/src/include/eina_tiler.h
index 005dc8e..dffa636 100644
--- a/src/include/eina_tiler.h
+++ b/src/include/eina_tiler.h
@@ -26,7 +26,7 @@
 typedef struct _Eina_Tiler Eina_Tiler;
 
 EAPI Eina_Tiler *eina_tiler_new(int w, int h);
-EAPI void eina_tiler_del(Eina_Tiler *t);
+EAPI void eina_tiler_free(Eina_Tiler *t);
 EAPI void eina_tiler_tile_size_set(Eina_Tiler *t, int w, int h);
 EAPI Eina_Bool eina_tiler_rect_add(Eina_Tiler *t, Eina_Rectangle *r);
 EAPI void eina_tiler_rect_del(Eina_Tiler *t, Eina_Rectangle *r);
diff --git a/src/include/eina_trash.h b/src/include/eina_trash.h
new file mode 100644
index 0000000..358fb62
--- /dev/null
+++ b/src/include/eina_trash.h
@@ -0,0 +1,100 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2002-2008 Carsten Haitzler, Vincent Torri, Jorge Luis Zapata Muga
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef EINA_TRASH_H__
+#define EINA_TRASH_H__
+
+/**
+ * @addtogroup Eina_Data_Types_Group Data Types
+ *
+ * @{
+ */
+
+/**
+ * @addtogroup Eina_Containers_Group Containers
+ *
+ * @{
+ */
+
+/**
+ * @defgroup Eina_Trash_Group Trash
+ *
+ * @{
+ */
+
+/**
+ * @typedef Eina_Trash
+ * Type for a generic container of unused allocated pointer.
+ */
+typedef struct _Eina_Trash Eina_Trash;
+
+/**
+ * @struct _Eina_Trash
+ * Type for a generic container of unused allocated pointer.
+ */
+struct _Eina_Trash
+{
+   Eina_Trash *next;
+};
+
+static inline void eina_trash_init(Eina_Trash **trash) EINA_ARG_NONNULL(1);
+static inline void eina_trash_push(Eina_Trash **trash, void *data) EINA_ARG_NONNULL(1);
+static inline void *eina_trash_pop(Eina_Trash **trash) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
+
+/**
+ * @def EINA_TRASH_FOREACH
+ * @brief Macro to remove all pointer from the trash.
+ *
+ * @param trash The trash to clean.
+ * @param data The pointer extracted from the trash.
+ *
+ * This macro allow the cleaning of @p trash in an easy way. It will
+ * remove all pointers from @p trash until it's empty.
+ *
+ * This macro can be used for freeing the data in the trash, like in
+ * the following example:
+ *
+ * @code
+ * Eina_Trash *trash = NULL;
+ * char *data;
+ *
+ * // trash is filled with pointer to some duped strings.
+ *
+ * EINA_TRASH_CLEAN(&trash, data)
+ *   free(data);
+ * @endcode
+ *
+ * @note this macro is usefull when you implement some memory pool.
+ */
+#define EINA_TRASH_CLEAN(trash, data) while ((data = eina_trash_pop(trash))
+
+#include "eina_inline_trash.x"
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#endif /* EINA_TRASH_H_ */
diff --git a/src/include/eina_types.h b/src/include/eina_types.h
index e86bd28..6592991 100644
--- a/src/include/eina_types.h
+++ b/src/include/eina_types.h
@@ -20,6 +20,12 @@
 #define EINA_TYPES_H_
 
 /**
+ * @addtogroup Eina_Core_Group Core
+ *
+ * @{
+ */
+
+/**
  * @defgroup Eina_Types_Group Types
  *
  * @{
@@ -59,6 +65,9 @@
 #ifdef EINA_ARG_NONNULL
 # undef EINA_ARG_NONNULL
 #endif
+#ifdef EINA_DEPRECATED
+# undef EINA_DEPRECATED
+#endif
 #ifdef EINA_MALLOC
 # undef EINA_MALLOC
 #endif
@@ -84,54 +93,42 @@
 # undef EINA_LIKELY
 #endif
 
-#ifdef HAVE___ATTRIBUTE__
-# ifdef __GNUC__
-#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#   define EINA_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
-#  else
-#   define EINA_WARN_UNUSED_RESULT
-#  endif
 
-#  if (!defined(EINA_SAFETY_CHECKS)) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
-#   define EINA_ARG_NONNULL(idx, ...) __attribute__ ((nonnull(idx, ## __VA_ARGS__)))
-#  else
-#   define EINA_ARG_NONNULL(idx, ...)
-#  endif
+#ifdef __GNUC__
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  define EINA_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
+# else
+#  define EINA_WARN_UNUSED_RESULT
+# endif
 
-#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
-#   define EINA_DEPRECATED __attribute__ ((__deprecated__))
-#  else
-#   define EINA_DEPRECATED
-#  endif
+# if (!defined(EINA_SAFETY_CHECKS)) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+#  define EINA_ARG_NONNULL(idx, ...) __attribute__ ((nonnull(idx, ## __VA_ARGS__)))
+# else
+#  define EINA_ARG_NONNULL(idx, ...)
+# endif
 
-#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-#   define EINA_MALLOC __attribute__ ((malloc))
-#   define EINA_PURE __attribute__ ((pure))
-#  else
-#   define EINA_MALLOC
-#   define EINA_PURE
-#  endif
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+#  define EINA_DEPRECATED __attribute__ ((__deprecated__))
+# else
+#  define EINA_DEPRECATED
+# endif
 
-#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-#   define EINA_PRINTF(fmt, arg)  __attribute__((format (printf, fmt, arg)))
-#   define EINA_SCANF(fmt, arg)  __attribute__((format (scanf, fmt, arg)))
-#   define EINA_FORMAT(fmt) __attribute__((format_arg(fmt)))
-#   define EINA_CONST __attribute__((const))
-#   define EINA_UNLIKELY(exp) __builtin_expect((exp), 0)
-#   define EINA_LIKELY(exp) __builtin_expect((exp), 1)
-#  else
-#   define EINA_PRINTF(fmt, arg)
-#   define EINA_SCANF(fmt, arg)
-#   define EINA_FORMAT(fmt)
-#   define EINA_CONST
-#   define EINA_UNLIKELY(exp) exp
-#   define EINA_LIKELY(exp) exp
-#  endif
-# else /* no __GNUC__ */
-#  define EINA_WARN_UNUSED_RESULT
-#  define EINA_ARG_NONNULL(idx, ...)
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+#  define EINA_MALLOC __attribute__ ((malloc))
+#  define EINA_PURE __attribute__ ((pure))
+# else
 #  define EINA_MALLOC
 #  define EINA_PURE
+# endif
+
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#  define EINA_PRINTF(fmt, arg)  __attribute__((format (printf, fmt, arg)))
+#  define EINA_SCANF(fmt, arg)  __attribute__((format (scanf, fmt, arg)))
+#  define EINA_FORMAT(fmt) __attribute__((format_arg(fmt)))
+#  define EINA_CONST __attribute__((const))
+#  define EINA_UNLIKELY(exp) __builtin_expect((exp), 0)
+#  define EINA_LIKELY(exp) __builtin_expect((exp), 1)
+# else
 #  define EINA_PRINTF(fmt, arg)
 #  define EINA_SCANF(fmt, arg)
 #  define EINA_FORMAT(fmt)
@@ -139,6 +136,7 @@
 #  define EINA_UNLIKELY(exp) exp
 #  define EINA_LIKELY(exp) exp
 # endif
+
 #elif defined(_WIN32)
 # define EINA_WARN_UNUSED_RESULT
 # define EINA_ARG_NONNULL(idx, ...)
@@ -155,7 +153,8 @@
 # define EINA_CONST
 # define EINA_UNLIKELY(exp) exp
 # define EINA_LIKELY(exp) exp
-#else /* no HAVE___ATTRIBUTE__ */
+
+#else /* ! __GNUC__ && ! _WIN32 */
 # define EINA_WARN_UNUSED_RESULT
 # define EINA_ARG_NONNULL(idx, ...)
 # define EINA_DEPRECATED
@@ -167,7 +166,7 @@
 # define EINA_CONST
 # define EINA_UNLIKELY(exp) exp
 # define EINA_LIKELY(exp) exp
-#endif
+#endif /* ! __GNUC__ && ! _WIN32 */
 
 
 /* remove this TRUE/FALSE redifinitions */
@@ -214,4 +213,8 @@ typedef void (*Eina_Free_Cb)(void *data);
  * @}
  */
 
+/**
+ * @}
+ */
+
 #endif /* EINA_TYPES_H_ */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 9935409..9076b20 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -5,7 +5,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
--DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\"
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+ at EINA_CPPFLAGS@
 
 lib_LTLIBRARIES = libeina.la
 
@@ -51,9 +52,15 @@ libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_un
 
 endif
 
+if EINA_STATIC_BUILD_FIXED_BITMAP
+
+libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+
+endif
+
 if EINA_STATIC_BUILD_PASS_THROUGH
 
-libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/pass_through/pass_through.c
+libeina_la_SOURCES += $(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
 
 endif
 
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index eb3b635..f7bcedf 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -35,7 +35,8 @@ host_triplet = @host@
 @EINA_STATIC_BUILD_CHAINED_POOL_TRUE at am__append_1 = $(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c
 @EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE at am__append_2 = $(top_srcdir)/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c
 @EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE at am__append_3 = $(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
- at EINA_STATIC_BUILD_PASS_THROUGH_TRUE@am__append_4 = $(top_srcdir)/src/modules/mp/pass_through/pass_through.c
+ at EINA_STATIC_BUILD_FIXED_BITMAP_TRUE@am__append_4 = $(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+ at EINA_STATIC_BUILD_PASS_THROUGH_TRUE@am__append_5 = $(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
 subdir = src/lib
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -44,10 +45,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -72,11 +73,13 @@ am__libeina_la_SOURCES_DIST = eina_error.c eina_hash.c eina_lalloc.c \
 	$(top_srcdir)/src/modules/mp/chained_pool/eina_chained_mempool.c \
 	$(top_srcdir)/src/modules/mp/ememoa_fixed/eina_ememoa_fixed.c \
 	$(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c \
-	$(top_srcdir)/src/modules/mp/pass_through/pass_through.c
+	$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c \
+	$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
 @EINA_STATIC_BUILD_CHAINED_POOL_TRUE at am__objects_1 = libeina_la-eina_chained_mempool.lo
 @EINA_STATIC_BUILD_EMEMOA_FIXED_TRUE at am__objects_2 = libeina_la-eina_ememoa_fixed.lo
 @EINA_STATIC_BUILD_EMEMOA_UNKNOWN_TRUE at am__objects_3 = libeina_la-eina_ememoa_unknown.lo
- at EINA_STATIC_BUILD_PASS_THROUGH_TRUE@am__objects_4 = libeina_la-pass_through.lo
+ at EINA_STATIC_BUILD_FIXED_BITMAP_TRUE@am__objects_4 = libeina_la-eina_fixed_bitmap.lo
+ at EINA_STATIC_BUILD_PASS_THROUGH_TRUE@am__objects_5 = libeina_la-eina_pass_through.lo
 am_libeina_la_OBJECTS = libeina_la-eina_error.lo \
 	libeina_la-eina_hash.lo libeina_la-eina_lalloc.lo \
 	libeina_la-eina_inlist.lo libeina_la-eina_file.lo \
@@ -89,7 +92,7 @@ am_libeina_la_OBJECTS = libeina_la-eina_error.lo \
 	libeina_la-eina_benchmark.lo libeina_la-eina_rectangle.lo \
 	libeina_la-eina_stringshare.lo libeina_la-eina_cpu.lo \
 	libeina_la-eina_tiler.lo $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3) $(am__objects_4)
+	$(am__objects_3) $(am__objects_4) $(am__objects_5)
 libeina_la_OBJECTS = $(am_libeina_la_OBJECTS)
 libeina_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libeina_la_CFLAGS) \
@@ -148,6 +151,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -261,7 +265,8 @@ AM_CPPFLAGS = \
 -I$(top_builddir)/src/include \
 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
--DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\"
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+ at EINA_CPPFLAGS@
 
 lib_LTLIBRARIES = libeina.la
 libeina_la_SOURCES = eina_error.c eina_hash.c eina_lalloc.c \
@@ -270,7 +275,8 @@ libeina_la_SOURCES = eina_error.c eina_hash.c eina_lalloc.c \
 	eina_main.c eina_counter.c eina_iterator.c eina_accessor.c \
 	eina_convert.c eina_rbtree.c eina_benchmark.c eina_rectangle.c \
 	eina_stringshare.c eina_cpu.c eina_tiler.c $(am__append_1) \
-	$(am__append_2) $(am__append_3) $(am__append_4)
+	$(am__append_2) $(am__append_3) $(am__append_4) \
+	$(am__append_5)
 libeina_la_LIBADD = @EINA_LIBS@ @dlopen_libs@
 libeina_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
 libeina_la_CFLAGS = @EINA_CFLAGS@
@@ -354,6 +360,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_ememoa_unknown.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_error.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_file.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_fixed_bitmap.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_hash.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_inlist.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_iterator.Plo at am__quote@
@@ -363,12 +370,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_main.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_mempool.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_module.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_pass_through.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_rbtree.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_rectangle.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_stringshare.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_tiler.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-eina_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libeina_la-pass_through.Plo at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -566,12 +573,19 @@ libeina_la-eina_ememoa_unknown.lo: $(top_srcdir)/src/modules/mp/ememoa_unknown/e
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_ememoa_unknown.lo `test -f '$(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/ememoa_unknown/eina_ememoa_unknown.c
 
-libeina_la-pass_through.lo: $(top_srcdir)/src/modules/mp/pass_through/pass_through.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-pass_through.lo -MD -MP -MF $(DEPDIR)/libeina_la-pass_through.Tpo -c -o libeina_la-pass_through.lo `test -f '$(top_srcdir)/src/modules/mp/pass_through/pass_through.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/pass_through/pass_through.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-pass_through.Tpo $(DEPDIR)/libeina_la-pass_through.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/modules/mp/pass_through/pass_through.c' object='libeina_la-pass_through.lo' libtool=yes @AMDEPBACKSLASH@
+libeina_la-eina_fixed_bitmap.lo: $(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_fixed_bitmap.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_fixed_bitmap.Tpo -c -o libeina_la-eina_fixed_bitmap.lo `test -f '$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_fixed_bitmap.Tpo $(DEPDIR)/libeina_la-eina_fixed_bitmap.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c' object='libeina_la-eina_fixed_bitmap.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-pass_through.lo `test -f '$(top_srcdir)/src/modules/mp/pass_through/pass_through.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/pass_through/pass_through.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_fixed_bitmap.lo `test -f '$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/fixed_bitmap/eina_fixed_bitmap.c
+
+libeina_la-eina_pass_through.lo: $(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -MT libeina_la-eina_pass_through.lo -MD -MP -MF $(DEPDIR)/libeina_la-eina_pass_through.Tpo -c -o libeina_la-eina_pass_through.lo `test -f '$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/libeina_la-eina_pass_through.Tpo $(DEPDIR)/libeina_la-eina_pass_through.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c' object='libeina_la-eina_pass_through.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libeina_la_CFLAGS) $(CFLAGS) -c -o libeina_la-eina_pass_through.lo `test -f '$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c' || echo '$(srcdir)/'`$(top_srcdir)/src/modules/mp/pass_through/eina_pass_through.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/src/lib/eina_accessor.c b/src/lib/eina_accessor.c
index 520ec09..f89768a 100644
--- a/src/lib/eina_accessor.c
+++ b/src/lib/eina_accessor.c
@@ -57,12 +57,6 @@
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Content_Access_Group Content Access
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Accessor_Group Accessor Functions
  *
  * @brief These functions manage accessor on containers.
@@ -181,7 +175,3 @@ eina_accessor_over(Eina_Accessor *accessor,
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_array.c b/src/lib/eina_array.c
index 688fa4b..c44bdd4 100644
--- a/src/lib/eina_array.c
+++ b/src/lib/eina_array.c
@@ -351,10 +351,18 @@ eina_array_grow(Eina_Array *array)
  *
  * @return 1 or greater on success, 0 on error.
  *
- * This function just sets up the error module or Eina. It is also
- * called by eina_init(). It returns 0 on failure, otherwise it
- * returns the number of times eina_error_init() has already been
- * called.
+ * This function sets up the error and magic modules or Eina. It is
+ * also called by eina_init(). It returns 0 on failure, otherwise it
+ * returns the number of times it has already been called. See
+ * eina_error_init() and eina_magic_string_init() for the
+ * documentation of the initialisation of the dependency modules.
+ *
+ * When no more Eina arrays are used, call eina_array_shutdown() to shut
+ * down the array module.
+ *
+ * @see eina_error_init()
+ * @see eina_magic_string_init()
+ * @see eina_init()
  */
 EAPI int
 eina_array_init(void)
@@ -392,13 +400,19 @@ eina_array_init(void)
 /**
  * @brief Shut down the array module.
  *
- * @return 0 when the error module is completely shut down, 1 or
+ * @return 0 when the list module is completely shut down, 1 or
  * greater otherwise.
  *
- * This function just shut down the error module set up by
- * eina_array_init(). It is also called by eina_shutdown(). It returns
- * 0 when it is called the same number of times than
- * eina_error_init().
+ * This function shuts down the array module. It returns 0 when it has
+ * been called the same number of times than eina_array_init(). In
+ * that case it shut down the magic and error modules. This function
+ * is also called by eina_shutdown(). See eina_error_shutdown() and
+ * eina_magic_string_shutdown() for the documentation of the
+ * shutting down of the dependency modules.
+ *
+ * @see eina_error_shutdown()
+ * @see eina_magic_string_shutdown()
+ * @see eina_shutdown()
  */
 EAPI int
 eina_array_shutdown(void)
@@ -714,4 +728,3 @@ eina_array_accessor_new(const Eina_Array *array)
 /**
  * @}
  */
-
diff --git a/src/lib/eina_benchmark.c b/src/lib/eina_benchmark.c
index c63776a..f08066c 100644
--- a/src/lib/eina_benchmark.c
+++ b/src/lib/eina_benchmark.c
@@ -61,6 +61,9 @@ void *alloca (size_t);
  * @cond LOCAL
  */
 
+#define EINA_BENCHMARK_FILENAME_MASK "bench_%s_%s.gnuplot"
+#define EINA_BENCHMARK_DATA_MASK "bench_%s_%s.%s.data"
+
 typedef struct _Eina_Run Eina_Run;
 struct _Eina_Run
 {
@@ -96,12 +99,6 @@ static int _eina_benchmark_count = 0;
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Tools_Group Tools
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Benchmark_Group Benchmark
  *
  * These functions allow you to add benchmark framework in a project
@@ -135,8 +132,18 @@ static int _eina_benchmark_count = 0;
  *
  * This function sets up the error, array and counter modules or
  * Eina. It is also called by eina_init(). It returns 0 on failure,
- * otherwise it returns the number of times eina_error_init() has
- * already been called.
+ * otherwise it returns the number of times it has already been
+ * called. See eina_error_init(), eina_array_init() and
+ * eina_counter_init() for the documentation of the initialisation of
+ * the dependency modules.
+ *
+ * When no more Eina benchmarks are used, call
+ * eina_benchmark_shutdown() to shut down the benchmark module.
+ *
+ * @see eina_error_init()
+ * @see eina_array_init()
+ * @see eina_counter_init()
+ * @see eina_init()
  */
 EAPI int
 eina_benchmark_init(void)
@@ -178,7 +185,12 @@ eina_benchmark_init(void)
  *
  * This function shut down the error, array and counter modules set up
  * by eina_array_init(). It is also called by eina_shutdown(). It returns
- * 0 when it is called the same number of times than eina_error_init().
+ * 0 when it is called the same number of times than eina_benchmark_init().
+ *
+ * @see eina_error_shutdown()
+ * @see eina_array_shutdown()
+ * @see eina_counter_shutdown()
+ * @see eina_shutdown()
  */
 EAPI int
 eina_benchmark_shutdown(void)
@@ -207,6 +219,9 @@ eina_benchmark_shutdown(void)
  * This function return a valid benchmark on success, or @c NULL if
  * memory allocation fails. In that case, the error is set to
  * #EINA_ERROR_OUT_OF_MEMORY.
+ *
+ * When the new module is not needed anymore, use
+ * eina_benchmark_free() to free the allocated memory.
  */
 EAPI Eina_Benchmark *
 eina_benchmark_new(const char *name, const char *run)
@@ -326,8 +341,6 @@ eina_benchmark_register(Eina_Benchmark *bench, const char *name, Eina_Benchmark_
  * immediatly. Otherwise, it returns the list of the names of each
  * test.
  */
-#define EINA_BENCHMARK_FILENAME_MASK "bench_%s_%s.gnuplot"
-#define EINA_BENCHMARK_DATA_MASK "bench_%s_%s.%s.data"
 EAPI Eina_Array *
 eina_benchmark_run(Eina_Benchmark *bench)
 {
@@ -395,7 +408,7 @@ eina_benchmark_run(Eina_Benchmark *bench)
 
 	eina_array_push(ea, strdup(buffer));
 
-	counter = eina_counter_add(run->name);
+	counter = eina_counter_new(run->name);
 
 	for (i = run->start; i < run->end; i += run->step)
 	  {
@@ -414,7 +427,7 @@ eina_benchmark_run(Eina_Benchmark *bench)
 	     free(result);
 	  }
 
-	eina_counter_delete(counter);
+	eina_counter_free(counter);
 
 	fclose(current_data);
 
@@ -436,7 +449,3 @@ eina_benchmark_run(Eina_Benchmark *bench)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_convert.c b/src/lib/eina_convert.c
index 75cf810..27fac40 100644
--- a/src/lib/eina_convert.c
+++ b/src/lib/eina_convert.c
@@ -80,12 +80,6 @@ EAPI Eina_Error EINA_ERROR_CONVERT_OUTRUN_STRING_LENGTH = 0;
  */
 
 /**
- * @addtogroup Eina_Tools_Group Tools
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Convert_Group Convert
  *
  * These functions allow you to convert integer or real numbers to
@@ -555,7 +549,3 @@ eina_convert_dtoa(double d, char *des)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_counter.c b/src/lib/eina_counter.c
index 51871ef..f76d42c 100644
--- a/src/lib/eina_counter.c
+++ b/src/lib/eina_counter.c
@@ -79,18 +79,18 @@ static int _eina_counter_init_count = 0;
 static inline int
 _eina_counter_time_get(Eina_Nano_Time *tp)
 {
-#if defined(CLOCK_PROCESS_CPUTIME_ID)
+# if defined(CLOCK_PROCESS_CPUTIME_ID)
    return clock_gettime(CLOCK_PROCESS_CPUTIME_ID, tp);
-#elif defined(CLOCK_PROF)
+# elif defined(CLOCK_PROF)
    return clock_gettime(CLOCK_PROF, tp);
-#elif defined(CLOCK_REALTIME)
+# elif defined(CLOCK_REALTIME)
    return clock_gettime(CLOCK_REALTIME, tp);
-#else
+# else
    return gettimeofday(tp, NULL);
-#endif
+# endif
 }
 #else
-static int EINA_COUNTER_ERROR_WINDOWS = 0;
+static int EINA_ERROR_COUNTER_WINDOWS = 0;
 static LARGE_INTEGER _eina_counter_frequency;
 
 static inline int
@@ -147,19 +147,13 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Tools_Group Tools
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Counter_Group Counter
  *
  * @brief These functions allow you to get the time spent in a part of a code.
  *
  * The counter system must be initialized with eina_counter_init() and
  * shut down with eina_counter_shutdown(). The create a counter, use
- * eina_counter_add(). To free it, use eina_counter_delete().
+ * eina_counter_new(). To free it, use eina_counter_free().
  *
  * To time a part of a code, call eina_counter_start() just before it,
  * and eina_counter_stop() just after it. Each time you start to time
@@ -199,7 +193,7 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *        return EXIT_FAILURE;
  *    }
  *
- *    counter = eina_counter_add("malloc");
+ *    counter = eina_counter_new("malloc");
  *
  *    eina_counter_start(counter);
  *    test_malloc();
@@ -207,7 +201,7 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *
  *    eina_counter_dump(counter);
  *
- *    eina_counter_delete(counter);
+ *    eina_counter_free(counter);
  *    eina_counter_shutdown();
  *
  *    return EXIT_SUCCESS;
@@ -237,13 +231,20 @@ _eina_counter_asiprintf(char *base, int *position, const char *format, ...)
  *
  * @return 1 or greater on success, 0 on error.
  *
- * This function allocates the memory needed by the counter, which
- * means that it sets up the error module of Eina, and only on Windows
- * it initializes the high precision timer. It also registers the errors
- * #EINA_ERROR_OUT_OF_MEMORY and, if on Windows,
- * #EINA_COUNTER_ERROR_WINDOWS. It is also called by eina_init(). It
- * returns 0 on failure, otherwise it returns the number of times it
- * has already been called.
+ * This function sets up the error module of Eina and only on Windows,
+ * it initializes the high precision timer. It also registers, only on
+ * Windows, the error #EINA_ERROR_COUNTER_WINDOWS. It is also called
+ * by eina_init(). It returns 0 on failure, otherwise it returns the
+ * number of times it has already been called. See eina_error_init()
+ * for the documentation of the initialisation of the dependency
+ * modules.
+ *
+ * Once the counter module is not used anymore, then
+ * eina_counter_shutdown() must be called to shut down the counter
+ * module.
+ *
+ * @see eina_error_init()
+ * @see eina_init()
  */
 EAPI int
 eina_counter_init(void)
@@ -258,9 +259,10 @@ eina_counter_init(void)
              return 0;
           }
 #ifdef _WIN32
+	EINA_ERROR_COUNTER_WINDOWS = eina_error_msg_register("Change your OS, you moron !");
         if (!QueryPerformanceFrequency(&_eina_counter_frequency))
           {
-             EINA_COUNTER_ERROR_WINDOWS = eina_error_msg_register("Change your OS, you moron !");
+	     eina_error_set(EINA_ERROR_COUNTER_WINDOWS);
              eina_error_shutdown();
              return 0;
           }
@@ -276,9 +278,13 @@ eina_counter_init(void)
  * @return 0 when the counter module is completely shut down, 1 or
  * greater otherwise.
  *
- * This function just shuts down the error module. It is also called by
- * eina_shutdown(). It returns 0 when it is called the same number of
- * times than eina_counter_init().
+ * This function shuts down the counter module set up by
+ * eina_counter_init(). It is called by eina_shutdown(). It
+ * returns 0 when it is called the same number of times than
+ * eina_counter_init().
+ *
+ * @see eina_error_shutdown()
+ * @see eina_shutdown()
  */
 EAPI int
 eina_counter_shutdown(void)
@@ -299,9 +305,12 @@ eina_counter_shutdown(void)
  * name. If @p name is @c NULL, the function returns @c NULL
  * immediatly. If memory allocation fails, @c NULL is returned and the
  * error is set to #EINA_ERROR_OUT_OF_MEMORY.
+ *
+ * Whe the new counter is not needed anymore, use eina_counter_free() to
+ * free the allocated memory.
  */
 EAPI Eina_Counter *
-eina_counter_add(const char *name)
+eina_counter_new(const char *name)
 {
    Eina_Counter *counter;
    size_t length;
@@ -331,11 +340,11 @@ eina_counter_add(const char *name)
  *
  * This function remove the clock of @p counter from the used clocks
  * (see eina_counter_start()) and frees the memory allocated for
- * @p counter. If @p counter is @c NULL, the functions returns
+ * @p counter. If @p counter is @c NULL, the function returns
  * immediatly.
  */
 EAPI void
-eina_counter_delete(Eina_Counter *counter)
+eina_counter_free(Eina_Counter *counter)
 {
    EINA_SAFETY_ON_NULL_RETURN(counter);
 
@@ -480,7 +489,3 @@ eina_counter_dump(Eina_Counter *counter)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_error.c b/src/lib/eina_error.c
index a3f0a22..0cd8f45 100644
--- a/src/lib/eina_error.c
+++ b/src/lib/eina_error.c
@@ -420,12 +420,6 @@ static const char *_colors[EINA_ERROR_LEVELS] = {
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Tools_Group Tools
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Error_Group Error
  *
  * @brief These functions provide error management for projects.
@@ -501,14 +495,14 @@ EAPI Eina_Error EINA_ERROR_OUT_OF_MEMORY = 0;
  */
 
 /**
- * @brief Initialize the error system.
+ * @brief Initialize the error module.
  *
  * @return 1 or greater on success, 0 on error.
  *
- * This function sets up the error system or Eina. It is called by
- * eina_init() and by all subsystems initialization functions. It
- * returns 0 on failure, otherwise it returns the number of times it
- * is called.
+ * This function sets up the error module of Eina. It is called by
+ * eina_init() and by all modules initialization functions. It returns
+ * @c 0 on failure, otherwise it returns the number of times it is
+ * called.
  *
  * The default error level value is set by default to
  * #EINA_ERROR_LEVEL_DBG if Eina is compiled with debug mode, or to
@@ -520,9 +514,13 @@ EAPI Eina_Error EINA_ERROR_OUT_OF_MEMORY = 0;
  * #EINA_ERROR_LEVEL_INFO and #EINA_ERROR_LEVEL_DBG. That value can
  * also be set later with eina_error_log_level_set().
  *
- * If you call explicitly this function and once the error subsystem
- * is not used anymore, then eina_error_shutdown() must be called to
- * shut down the error system.
+ * This function registers the error #EINA_ERROR_OUT_OF_MEMORY.
+ *
+ * Once the error module is not used anymore, then
+ * eina_error_shutdown() must be called to shut down the error
+ * module.
+ *
+ * @see eina_init()
  */
 EAPI int eina_error_init(void)
 {
@@ -541,16 +539,18 @@ EAPI int eina_error_init(void)
 }
 
 /**
- * @brief Shut down the error system.
+ * @brief Shut down the error module.
  *
- * @return 0 when the error system is completely shut down, 1 or
+ * @return 0 when the error module is completely shut down, 1 or
  * greater otherwise.
  *
- * This function shut down the error system set up by
+ * This function shuts down the error module set up by
  * eina_error_init(). It is called by eina_shutdown() and by all
- * subsystems shutdown functions. It returns 0 when it is called the
- * same number of times than eina_error_init() and it clears the error
- * list.
+ * modules shutdown functions. It returns 0 when it is called the
+ * same number of times than eina_error_init(). In that case it clears
+ * the error list.
+ *
+ * @see eina_shutdown()
  */
 EAPI int eina_error_shutdown(void)
 {
@@ -798,7 +798,3 @@ EAPI void eina_error_log_level_set(Eina_Error_Level level)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_file.c b/src/lib/eina_file.c
index a2a681e..c958f9e 100644
--- a/src/lib/eina_file.c
+++ b/src/lib/eina_file.c
@@ -71,13 +71,7 @@ void *alloca (size_t);
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Tools_Group Tools
- *
- * @{
- */
-
-/**
- * @addtogroup Eina_File_Group Memory File
+ * @addtogroup Eina_File_Group File
  *
  * @brief Functions to traverse directories and split paths.
  *
@@ -279,7 +273,3 @@ eina_file_split(char *path)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_hash.c b/src/lib/eina_hash.c
index 48cb10b..ac32b6c 100644
--- a/src/lib/eina_hash.c
+++ b/src/lib/eina_hash.c
@@ -420,7 +420,7 @@ _eina_hash_del_by_key(Eina_Hash *hash, const void *key, const void *data)
    if (!key) return EINA_FALSE;
    if (!hash->buckets) return EINA_FALSE;
 
-   key_length = hash->key_length_cb(key);
+   key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
    key_hash = hash->key_hash_cb(key, key_length);
    return _eina_hash_del_by_key_hash(hash, key, key_length, key_hash, data);
 }
@@ -439,6 +439,13 @@ _eina_string_key_cmp(const char *key1, __UNUSED__ int key1_length,
    return strcmp(key1, key2);
 }
 
+static int
+_eina_stringshared_key_cmp(const char *key1, __UNUSED__ int key1_length,
+			   const char *key2, __UNUSED__ int key2_length)
+{
+   return key1 - key2;
+}
+
 static unsigned int
 _eina_int32_key_length(__UNUSED__ const uint32_t *key)
 {
@@ -449,11 +456,7 @@ static int
 _eina_int32_key_cmp(const uint32_t *key1, __UNUSED__ int key1_length,
 		    const uint32_t *key2, __UNUSED__ int key2_length)
 {
-  if (*key1 > *key2)
-    return 1;
-  if (*key1 < *key2)
-    return -1;
-  return 0;
+   return *key1 - *key2;
 }
 
 static unsigned int
@@ -466,14 +469,9 @@ static int
 _eina_int64_key_cmp(const uint64_t *key1, __UNUSED__ int key1_length,
 		    const uint64_t *key2, __UNUSED__ int key2_length)
 {
-  if (*key1 > *key2)
-    return 1;
-  if (*key1 < *key2)
-    return -1;
-  return 0;
+   return *key1 - *key2;
 }
 
-
 static Eina_Bool
 _eina_foreach_cb(const Eina_Hash *hash, Eina_Hash_Tuple *data, Eina_Hash_Foreach_Data *fdata)
 {
@@ -615,18 +613,6 @@ _eina_hash_iterator_free(Eina_Iterator_Hash *it)
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Data_Types_Group Data Types
- *
- * @{
- */
-
-/**
- * @addtogroup Eina_Containers_Group Containers
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Hash_Group Hash Table
  *
  * @brief give a small description here : what it is for, what it does
@@ -656,10 +642,16 @@ _eina_hash_iterator_free(Eina_Iterator_Hash *it)
  *
  * @return 1 or greater on success, 0 on error.
  *
- * This function just sets up the error module or Eina. It is also
- * called by eina_init(). It returns 0 on failure, otherwise it
- * returns the number of times eina_error_init() has already been
- * called.
+ * This function sets up the error module of Eina. It is also called
+ * by eina_init(). It returns 0 on failure, otherwise it returns the
+ * number of times it has already been called. See eina_error_init()
+ * for the documentation of the initialisation of the dependency
+ * module.
+ *
+ * When no more Eina hash tables are used, call eina_hash_shutdown()
+ * to shut down the array module.
+ *
+ * @see eina_error_init()
  */
 EAPI int
 eina_hash_init(void)
@@ -704,7 +696,6 @@ eina_hash_new(Eina_Key_Length key_length_cb,
    Eina_Hash *new;
 
    eina_error_set(0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(key_length_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key_cmp_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key_hash_cb, NULL);
    EINA_SAFETY_ON_TRUE_RETURN_VAL(buckets_power_size < 3, NULL);
@@ -800,6 +791,16 @@ eina_hash_pointer_new(Eina_Free_Cb data_free_cb)
 #endif
 }
 
+EAPI Eina_Hash *
+eina_hash_stringshared_new(Eina_Free_Cb data_free_cb)
+{
+   return eina_hash_new(NULL,
+			EINA_KEY_CMP(_eina_stringshared_key_cmp),
+			EINA_KEY_HASH(eina_hash_superfast),
+			data_free_cb,
+			EINA_HASH_BUCKET_SIZE);
+}
+
 /**
  * Retrieves the number of buckets available in the given hash table.
  * @param hash The given hash table.
@@ -941,12 +942,11 @@ eina_hash_add(Eina_Hash *hash, const void *key, const void *data)
 
    EINA_MAGIC_CHECK_HASH(hash);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_length_cb, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_hash_cb, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
 
-   key_length = hash->key_length_cb(key);
+   key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
    key_hash = hash->key_hash_cb(key, key_length);
 
    return eina_hash_add_by_hash(hash, key, key_length, key_hash, data);
@@ -980,12 +980,11 @@ eina_hash_direct_add(Eina_Hash *hash, const void *key, const void *data)
 
    EINA_MAGIC_CHECK_HASH(hash);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_length_cb, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_hash_cb, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
 
-   key_length = hash->key_length_cb(key);
+   key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
    key_hash = hash->key_hash_cb(key, key_length);
 
    return eina_hash_direct_add_by_hash(hash, key, key_length, key_hash, data);
@@ -1167,11 +1166,10 @@ eina_hash_find(const Eina_Hash *hash, const void *key)
    if (!hash) return NULL;
 
    EINA_MAGIC_CHECK_HASH(hash);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_length_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_hash_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key, NULL);
 
-   key_length = hash->key_length_cb(key);
+   key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
    hash_num = hash->key_hash_cb(key, key_length);
 
    return eina_hash_find_by_hash(hash, key, key_length, hash_num);
@@ -1232,12 +1230,11 @@ eina_hash_modify(Eina_Hash *hash, const void *key, const void *data)
 
    EINA_MAGIC_CHECK_HASH(hash);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash, NULL);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_length_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_hash_cb, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(key, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(data, NULL);
 
-   key_length = hash->key_length_cb(key);
+   key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
    hash_num = hash->key_hash_cb(key, key_length);
 
    return eina_hash_modify_by_hash(hash, key, key_length, hash_num, data);
@@ -1502,11 +1499,3 @@ eina_hash_superfast(const char *key, int len)
 /**
  * @}
  */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_inlist.c b/src/lib/eina_inlist.c
index 29d5900..8d922bc 100644
--- a/src/lib/eina_inlist.c
+++ b/src/lib/eina_inlist.c
@@ -34,6 +34,10 @@
  *                                  Local                                     *
  *============================================================================*/
 
+/**
+ * @cond LOCAL
+ */
+
 typedef struct _Eina_Iterator_Inlist Eina_Iterator_Inlist;
 typedef struct _Eina_Accessor_Inlist Eina_Accessor_Inlist;
 
@@ -126,6 +130,11 @@ eina_inlist_accessor_free(Eina_Accessor_Inlist *it) {
 	free(it);
 }
 
+/**
+ * @endcond
+ */
+
+
 /*============================================================================*
  *                                 Global                                     *
  *============================================================================*/
@@ -135,8 +144,94 @@ eina_inlist_accessor_free(Eina_Accessor_Inlist *it) {
  *============================================================================*/
 
 /**
- * To be documented
- * FIXME: To be fixed
+ * @addtogroup Eina_Inline_List_Group Inline List
+ *
+ * @brief These functions provide inline list management.
+ *
+ * Inline lists mean its nodes pointers are part of same memory as
+ * data. This has the benefit of framenting memory less and avoiding
+ * @c node->data indirection, but has the drawback of elements only
+ * being able to be part of one single inlist at same time. But it is
+ * possible to have inlist nodes to be part of regular lists created
+ * with eina_list_append() or eina_list_prepend().
+ *
+ * Inline lists have its purposes, but if you don't know them go with
+ * regular lists instead.
+ *
+ * @code
+ * #include <Eina.h>
+ * #include <stdio.h>
+ *
+ * int
+ * main(void)
+ * {
+ *    struct my_struct {
+ *       EINA_INLIST;
+ *       int a, b;
+ *    } *d, *cur;
+ *    Eina_Inlist *list, *itr;
+ *
+ *    eina_init();
+ *
+ *    d = malloc(sizeof(*d));
+ *    d->a = 1;
+ *    d->b = 10;
+ *    list = eina_inlist_append(NULL, EINA_INLIST_GET(d));
+ *
+ *    d = malloc(sizeof(*d));
+ *    d->a = 2;
+ *    d->b = 20;
+ *    list = eina_inlist_append(list, EINA_INLIST_GET(d));
+ *
+ *    d = malloc(sizeof(*d));
+ *    d->a = 3;
+ *    d->b = 30;
+ *    list = eina_inlist_prepend(list, EINA_INLIST_GET(d));
+ *
+ *    printf("list=%p\n", list);
+ *    EINA_INLIST_FOREACH(list, cur)
+ *      printf("\ta=%d, b=%d\n", cur->a, cur->b);
+ *
+ *    list = eina_inlist_remove(list, EINA_INLIST_GET(d));
+ *    free(d);
+ *    printf("list=%p\n", list);
+ *    for (itr = list; itr != NULL; itr = itr->next)
+ *      {
+ * 	cur = EINA_INLIST_CONTAINER_GET(itr, struct my_struct);
+ * 	printf("\ta=%d, b=%d\n", cur->a, cur->b);
+ *      }
+ *
+ *    while (list)
+ *      {
+ * 	Eina_Inlist *aux = list;
+ * 	list = eina_inlist_remove(list, list);
+ * 	free(aux);
+ *      }
+ *
+ *    eina_shutdown();
+ *
+ *    return 0;
+ * }
+ * @endcode
+ *
+ * @{
+ */
+
+/**
+ * Add a new node to end of list.
+ *
+ * @note this code is meant to be fast, appends are O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a new_l is considered to be in no list. If it was in another
+ *       list before, please eina_inlist_remove() it before adding. No
+ *       check of @a new_l prev and next pointers is done, so it' safe
+ *       to have them uninitialized.
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param new_l new list node, must not be NULL.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_append(Eina_Inlist *list, Eina_Inlist *new_l)
@@ -161,9 +256,22 @@ eina_inlist_append(Eina_Inlist *list, Eina_Inlist *new_l)
    list->last = new_l;
    return list;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Add a new node to beginning of list.
+ *
+ * @note this code is meant to be fast, prepends are O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a new_l is considered to be in no list. If it was in another
+ *       list before, please eina_inlist_remove() it before adding. No
+ *       check of @a new_l prev and next pointers is done, so it' safe
+ *       to have them uninitialized.
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param new_l new list node, must not be NULL.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_prepend(Eina_Inlist *list, Eina_Inlist *new_l)
@@ -182,9 +290,28 @@ eina_inlist_prepend(Eina_Inlist *list, Eina_Inlist *new_l)
    list->last = NULL;
    return new_l;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Add a new node after the given relative item in list.
+ *
+ * @note this code is meant to be fast, appends are O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a new_l is considered to be in no list. If it was in another
+ *       list before, please eina_inlist_remove() it before adding. No
+ *       check of @a new_l prev and next pointers is done, so it' safe
+ *       to have them uninitialized.
+ *
+ * @note @a relative is considered to be inside @a list, no checks are
+ *       done to confirm that and giving nodes from different lists
+ *       will lead to problems. Giving NULL @a relative is the same as
+ *       eina_list_append().
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param new_l new list node, must not be NULL.
+ * @param relative reference node, @a new_l will be added after it.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_append_relative(Eina_Inlist *list,
@@ -207,9 +334,28 @@ eina_inlist_append_relative(Eina_Inlist *list,
    }
    return eina_inlist_append(list, new_l);
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Add a new node before the given relative item in list.
+ *
+ * @note this code is meant to be fast, prepends are O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a new_l is considered to be in no list. If it was in another
+ *       list before, please eina_inlist_remove() it before adding. No
+ *       check of @a new_l prev and next pointers is done, so it' safe
+ *       to have them uninitialized.
+ *
+ * @note @a relative is considered to be inside @a list, no checks are
+ *       done to confirm that and giving nodes from different lists
+ *       will lead to problems. Giving NULL @a relative is the same as
+ *       eina_list_prepend().
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param new_l new list node, must not be NULL.
+ * @param relative reference node, @a new_l will be added before it.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_prepend_relative(Eina_Inlist *list,
@@ -238,9 +384,23 @@ eina_inlist_prepend_relative(Eina_Inlist *list,
    }
    return eina_inlist_prepend(list, new_l);
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Remove node from list.
+ *
+ * @note this code is meant to be fast, removals are O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a item is considered to be inside @a list, no checks are
+ *       done to confirm that and giving nodes from different lists
+ *       will lead to problems, specially if @a item is the head since
+ *       it will be different from @a list and the wrong new head will
+ *       be returned.
+ *
+ * @param list existing list head, must not be NULL.
+ * @param item existing list node, must not be NULL.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_remove(Eina_Inlist *list, Eina_Inlist *item)
@@ -250,6 +410,8 @@ eina_inlist_remove(Eina_Inlist *list, Eina_Inlist *item)
    /* checkme */
    EINA_SAFETY_ON_NULL_RETURN_VAL(list, NULL);
    EINA_SAFETY_ON_NULL_RETURN_VAL(item, list);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL
+     ((item != list) && (item->prev == NULL) && (item->next == NULL), list);
 
    if (item->next)
      item->next->prev = item->prev;
@@ -268,9 +430,21 @@ eina_inlist_remove(Eina_Inlist *list, Eina_Inlist *item)
    item->prev = NULL;
    return return_l;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Move existing node to beginning of list.
+ *
+ * @note this code is meant to be fast, promotion is O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a item is considered to be inside @a list, no checks are
+ *       done to confirm that and giving nodes from different lists
+ *       will lead to problems.
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param item list node to move to beginning (head), must not be NULL.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_promote(Eina_Inlist *list, Eina_Inlist *item)
@@ -296,9 +470,21 @@ eina_inlist_promote(Eina_Inlist *list, Eina_Inlist *item)
 
    return item;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Move existing node to end of list.
+ *
+ * @note this code is meant to be fast, demoting is O(1) and do not
+ *       walk @a list anyhow.
+ *
+ * @note @a item is considered to be inside @a list, no checks are
+ *       done to confirm that and giving nodes from different lists
+ *       will lead to problems.
+ *
+ * @param list existing list head or NULL to create a new list.
+ * @param item list node to move to end (tail), must not be NULL.
+ *
+ * @return the new list head. Use it and not given @a list anymore.
  */
 EAPI Eina_Inlist *
 eina_inlist_demote(Eina_Inlist *list, Eina_Inlist *item)
@@ -331,9 +517,17 @@ eina_inlist_demote(Eina_Inlist *list, Eina_Inlist *item)
    l->last = item;
    return l;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * Find given node in list, returns itself if found, NULL if not.
+ *
+ * @warning this is an expensive call and have O(n) cost, possibly
+ *    walking the whole list.
+ *
+ * @param list existing list to search @a item in, must not be NULL.
+ * @param item what to search for, must not be NULL.
+ *
+ * @return @a item if found, NULL if not.
  */
 EAPI Eina_Inlist *
 eina_inlist_find(Eina_Inlist *list, Eina_Inlist *item)
@@ -372,6 +566,26 @@ eina_inlist_count(const Eina_Inlist *list)
    return i;
 }
 
+/**
+ * @brief Returned a new iterator asociated to a list.
+ *
+ * @param list The list.
+ * @return A new iterator.
+ *
+ * This function returns a newly allocated iterator associated to @p
+ * list. If @p list is @c NULL or the count member of @p list is less
+ * or equal than 0, this function still returns a valid iterator that
+ * will always return false on eina_iterator_next(), thus keeping API
+ * sane.
+ *
+ * If the memory can not be allocated, NULL is returned and
+ * #EINA_ERROR_OUT_OF_MEMORY is set. Otherwise, a valid iterator is
+ * returned.
+ *
+ * @warning if the list structure changes then the iterator becomes
+ *    invalid! That is, if you add or remove nodes this iterator
+ *    behavior is undefined and your program may crash!
+ */
 EAPI Eina_Iterator *
 eina_inlist_iterator_new(const Eina_Inlist *list)
 {
@@ -396,6 +610,18 @@ eina_inlist_iterator_new(const Eina_Inlist *list)
    return &it->iterator;
 }
 
+/**
+ * @brief Returned a new accessor asociated to a list.
+ *
+ * @param list The list.
+ * @return A new accessor.
+ *
+ * This function returns a newly allocated accessor associated to
+ * @p list. If @p list is @c NULL or the count member of @p list is
+ * less or equal than 0, this function returns NULL. If the memory can
+ * not be allocated, NULL is returned and #EINA_ERROR_OUT_OF_MEMORY is
+ * set. Otherwise, a valid accessor is returned.
+ */
 EAPI Eina_Accessor *
 eina_inlist_accessor_new(const Eina_Inlist *list)
 {
@@ -420,3 +646,7 @@ eina_inlist_accessor_new(const Eina_Inlist *list)
 
    return &it->accessor;
 }
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_iterator.c b/src/lib/eina_iterator.c
index b2f7383..24644d0 100644
--- a/src/lib/eina_iterator.c
+++ b/src/lib/eina_iterator.c
@@ -58,12 +58,6 @@
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Content_Access_Group Content Access
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Iterator_Group Iterator Functions
  *
  * @brief These functions manage iterators on containers.
@@ -175,7 +169,3 @@ eina_iterator_foreach(Eina_Iterator *iterator,
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_lalloc.c b/src/lib/eina_lalloc.c
index 3ca9cf4..767e123 100644
--- a/src/lib/eina_lalloc.c
+++ b/src/lib/eina_lalloc.c
@@ -81,7 +81,7 @@ EAPI Eina_Lalloc * eina_lalloc_new(void *data, Eina_Lalloc_Alloc alloc_cb, Eina_
 	return a;
 }
 
-EAPI void eina_lalloc_delete(Eina_Lalloc *a)
+EAPI void eina_lalloc_free(Eina_Lalloc *a)
 {
 	EINA_SAFETY_ON_NULL_RETURN(a);
 	EINA_SAFETY_ON_NULL_RETURN(a->free_cb);
diff --git a/src/lib/eina_list.c b/src/lib/eina_list.c
index 352b042..da63a82 100644
--- a/src/lib/eina_list.c
+++ b/src/lib/eina_list.c
@@ -160,7 +160,7 @@ _eina_list_mempool_accounting_new(__UNUSED__ Eina_List *list)
 {
    Eina_List_Accounting *tmp;
 
-   tmp = eina_mempool_alloc(_eina_list_accounting_mp, sizeof (Eina_List_Accounting));
+   tmp = eina_mempool_malloc(_eina_list_accounting_mp, sizeof (Eina_List_Accounting));
    if (!tmp) return NULL;
 
    EINA_MAGIC_SET(tmp, EINA_MAGIC_LIST_ACCOUNTING);
@@ -181,7 +181,7 @@ _eina_list_mempool_list_new(__UNUSED__ Eina_List *list)
 {
    Eina_List *tmp;
 
-   tmp = eina_mempool_alloc(_eina_list_mp, sizeof (Eina_List));
+   tmp = eina_mempool_malloc(_eina_list_mp, sizeof (Eina_List));
    if (!tmp) return NULL;
 
    EINA_MAGIC_SET(tmp, EINA_MAGIC_LIST);
@@ -423,7 +423,7 @@ eina_list_sort_merge(Eina_List *a, Eina_List *b, Eina_Compare_Cb func)
 /**
  * @addtogroup Eina_List_Group List
  *
- * @brief These functions provide single linked list management.
+ * @brief These functions provide double linked list management.
  *
  * For more information, you can look at the @ref tutorial_list_page.
  *
@@ -435,10 +435,25 @@ eina_list_sort_merge(Eina_List *a, Eina_List *b, Eina_Compare_Cb func)
  *
  * @return 1 or greater on success, 0 on error.
  *
- * This function just sets up the error module or Eina. It is also
- * called by eina_init(). It returns 0 on failure, otherwise it
- * returns the number of times eina_error_init() has already been
- * called.
+ * This function sets up the error, magic and mempool modules of
+ * Eina. It is also called by eina_init(). It returns 0 on failure,
+ * otherwise it returns the number of times it has already been
+ * called. If Eina has been configured with the default memory pool,
+ * then the memory pool used in an Eina list will be
+ * "pass_through". Otherwise, the environment variable EINA_MEMPOOL is
+ * read and its value is chosen as memory pool ; if EINA_MEMPOOL is
+ * not defined, then the "chained_mempool" memory pool is chosen. If
+ * the memory pool is not found, then eina_list_init() return @c 0.
+ * See eina_error_init(), eina_magic_string_init() and
+ * eina_mempool_init() for the documentation of the initialisation of
+ * the dependency modules.
+ *
+ * When no more Eina lists are used, call eina_list_shutdown() to shut
+ * down the list module.
+ *
+ * @see eina_error_init()
+ * @see eina_magic_string_init()
+ * @see eina_mempool_init()
  */
 EAPI int
 eina_list_init(void)
@@ -472,19 +487,19 @@ eina_list_init(void)
 	 choice = "chained_mempool";
 #endif
 
-       _eina_list_mp = eina_mempool_new(choice, "list", NULL,
+       _eina_list_mp = eina_mempool_add(choice, "list", NULL,
 					sizeof (Eina_List), 320);
        if (!_eina_list_mp)
          {
            EINA_ERROR_PERR("ERROR: Mempool for list cannot be allocated in list init.\n");
 	   goto on_init_fail;
          }
-       _eina_list_accounting_mp = eina_mempool_new(choice, "list_accounting", NULL,
+       _eina_list_accounting_mp = eina_mempool_add(choice, "list_accounting", NULL,
 						   sizeof (Eina_List_Accounting), 80);
        if (!_eina_list_accounting_mp)
          {
            EINA_ERROR_PERR("ERROR: Mempool for list accounting cannot be allocated in list init.\n");
-	   eina_mempool_delete(_eina_list_mp);
+	   eina_mempool_del(_eina_list_mp);
 	   goto on_init_fail;
          }
 
@@ -516,13 +531,13 @@ eina_list_init(void)
 /**
  * @brief Shut down the list module.
  *
- * @return 0 when the error module is completely shut down, 1 or
+ * @return 0 when the list module is completely shut down, 1 or
  * greater otherwise.
  *
- * This function just shut down the error module set up by
- * eina_list_init(). It is also called by eina_shutdown(). It returns
- * 0 when it is called the same number of times than
- * eina_error_init().
+ * This function shuts down the mempool, magic and error modules set
+ * up by eina_list_init(). It is also called by eina_shutdown(). It
+ * returns 0 when it is called the same number of times than
+ * eina_list_init().
  */
 EAPI int
 eina_list_shutdown(void)
@@ -531,8 +546,8 @@ eina_list_shutdown(void)
 
    if (!_eina_list_init_count)
      {
-	eina_mempool_delete(_eina_list_accounting_mp);
-	eina_mempool_delete(_eina_list_mp);
+	eina_mempool_del(_eina_list_accounting_mp);
+	eina_mempool_del(_eina_list_mp);
 
 	eina_mempool_shutdown();
 	eina_magic_string_shutdown();
@@ -1634,6 +1649,8 @@ eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, c
    unsigned int inf, sup, cur, tmp;
    int part;
 
+   if (!list) return NULL;
+
    inf = 0;
    sup = eina_list_count(list) ;
    cur = sup >> 1;
diff --git a/src/lib/eina_magic.c b/src/lib/eina_magic.c
index bf7187b..9ca2a52 100644
--- a/src/lib/eina_magic.c
+++ b/src/lib/eina_magic.c
@@ -37,6 +37,10 @@
  *                                  Local                                     *
  *============================================================================*/
 
+/**
+ * @cond LOCAL
+ */
+
 #ifdef EINA_MAGIC_DEBUG
 
 typedef struct _Eina_Magic_String Eina_Magic_String;
@@ -53,6 +57,10 @@ static Eina_Inlist *strings = NULL;
 
 #endif
 
+/**
+ * @endcond
+ */
+
 /*============================================================================*
  *                                 Global                                     *
  *============================================================================*/
@@ -61,6 +69,28 @@ static Eina_Inlist *strings = NULL;
  *                                   API                                      *
  *============================================================================*/
 
+/**
+ * @addtogroup Eina_Magic_Group Magic
+ *
+ * @brief These functions provide magic checks management for projects.
+ *
+ * @{
+ */
+
+/**
+ * @brief Initialize the magic module.
+ *
+ * @return 1 or greater.
+ *
+ * This function just increases a reference counter. If the magic
+ * module is disabled at configure time, then it always returns @c 1.
+ *
+ * Once the magic module is not used anymore, then
+ * eina_magic_shutdown() must be called to shut down the magic
+ * module.
+ *
+ * @see eina_init()
+ */
 EAPI int
 eina_magic_string_init(void)
 {
@@ -73,6 +103,21 @@ eina_magic_string_init(void)
 #endif
 }
 
+/**
+ * @brief Shut down the magic module.
+ *
+ * @return 0 when the magic module is completely shut down, 1 or
+ * greater otherwise.
+ *
+ * This function shuts down the magic module set up by
+ * eina_magic_string_init(). It is called by eina_shutdown() and by
+ * all modules shutdown functions. It returns 0 when it is called the
+ * same number of times than eina_magic_string_init(). In that case it
+ * clears the magic list and return @c 0. If the magic module is
+ * disabled at configure time, then it always returns @c 0.
+ *
+ * @see eina_shutdown()
+ */
 EAPI int
 eina_magic_string_shutdown(void)
 {
@@ -102,6 +147,16 @@ eina_magic_string_shutdown(void)
 
 #ifdef EINA_MAGIC_DEBUG
 
+/**
+ * @brief Return the string associated to the given magic identifier.
+ *
+ * @param magic The magic identifier.
+ * @return The string associated to the identifier.
+ *
+ * This function returns the string associated to @p magic. If none
+ * are found, the this function returns @c NULL. The returned value
+ * must not be freed.
+ */
 EAPI const char*
 eina_magic_string_get(Eina_Magic magic)
 {
@@ -114,6 +169,17 @@ eina_magic_string_get(Eina_Magic magic)
    return NULL;
 }
 
+/**
+ * @brief Set the string associated to the given magic identifier.
+ *
+ * @param magic The magic identifier.
+ * @param The string associated to the identifier.
+ *
+ * This function sets the string @p magic_name to @p magic. If a
+ * string is already associated to @p magic, then it is freed and @p
+ * magic_name is duplicated. Otherwise, it is added to the list of
+ * magic strings.
+ */
 EAPI void
 eina_magic_string_set(Eina_Magic magic, const char *magic_name)
 {
@@ -131,6 +197,8 @@ eina_magic_string_set(Eina_Magic magic, const char *magic_name)
        }
 
    ems = malloc(sizeof (Eina_Magic_String));
+   if (!ems)
+     return;
    ems->magic = magic;
    if (magic_name)
      ems->string = strdup(magic_name);
@@ -140,6 +208,29 @@ eina_magic_string_set(Eina_Magic magic, const char *magic_name)
    strings = eina_inlist_prepend(strings, EINA_INLIST_GET(ems));
 }
 
+/**
+ * @brief Display a message or abort is a magic check failed.
+ *
+ * @param d The checked data pointer.
+ * @param m The magic identifer to check.
+ * @param req_m The requested magic identifier to check.
+ * @param file The file in which the magic check failed.
+ * @param fcn The function in which the magic check failed.
+ * @param line The line at which the magic check failed.
+ *
+ * This function displays an error message if a magic check has
+ * failed, using the following logic in the following order:
+ * @li If @p d is @c NULL, a message warns about a @c NULL pointer.
+ * @li Otherwise, if @p m is equal to #EINA_MAGIC_NONE, a message
+ * warns about a handle that was already freed.
+ * @li Otherwise, if @p m is equal to @p req_m, a message warns about
+ * a handle that is of wrong type.
+ * @li Otherwise, a message warns you about ab-using that function...
+ *
+ * If the environment variable EINA_ERROR_ABORT is set, abort() is
+ * called and the program stops. It is useful for debugging programs
+ * with gdb.
+ */
 EAPI void
 eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m, const char *file, const char *fnc, int line)
 {
@@ -185,3 +276,7 @@ eina_magic_fail(void *d, Eina_Magic m, Eina_Magic req_m, const char *file, const
 }
 
 #endif
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_main.c b/src/lib/eina_main.c
index cec96bc..bb586f9 100644
--- a/src/lib/eina_main.c
+++ b/src/lib/eina_main.c
@@ -35,6 +35,20 @@
 #include "eina_rectangle.h"
 
 /*============================================================================*
+ *                                  Local                                     *
+ *============================================================================*/
+
+/**
+ * @cond LOCAL
+ */
+
+static int _eina_main_count = 0;
+
+/**
+ * @endcond
+ */
+
+/*============================================================================*
  *                                 Global                                     *
  *============================================================================*/
 
@@ -42,8 +56,39 @@
  *                                   API                                      *
  *============================================================================*/
 
-static int _eina_main_count = 0;
+/**
+ * @addtogroup Eina_Main_Group Main
+ *
+ * @brief These functions provide general initialisation and shut down
+ * functions.
+ *
+ * @{
+ */
 
+/**
+ * @brief Initialize the Eina library.
+ *
+ * @return 1 or greater on success, 0 on error.
+ *
+ * This function sets up all the eina modules. It returns 0 on
+ * failure (that is, when one of the module fails to initialize),
+ * otherwise it returns the number of times it has already been
+ * called. The list of initialisation functions that are called are
+ * (in that order):
+ *
+ * @li eina_error_init()
+ * @li eina_hash_init()
+ * @li eina_stringshare_init()
+ * @li eina_list_init()
+ * @li eina_array_init()
+ * @li eina_counter_init()
+ * @li eina_benchmark_init()
+ * @li eina_magic_string_init()
+ * @li eina_rectangle_init()
+ *
+ * When Eina is not used anymore, call eina_shutdown() to shut down
+ * the Eina library.
+ */
 EAPI int
 eina_init(void)
 {
@@ -117,6 +162,31 @@ eina_init(void)
    return 0;
 }
 
+/**
+ * @brief Shut down the Eina library.
+ *
+ * @return 0 when all the modules is completely shut down, 1 or
+ * greater otherwise.
+ *
+ * This function shuts down the Eina library. It returns 0 when it has
+ * been called the same number of times than eina_init(). In that case
+ * it shut down all the Eina modules. The list of shut down functions
+ * that are called are (in that order):
+ *
+ * @li eina_rectangle_init()
+ * @li eina_magic_string_init()
+ * @li eina_benchmark_init()
+ * @li eina_counter_init()
+ * @li eina_array_init()
+ * @li eina_list_init()
+ * @li eina_stringshare_init()
+ * @li eina_hash_init()
+ * @li eina_error_init()
+ *
+ * Once this function succeeds (that is, @c 0 is returned), you must
+ * not call any of the Eina function anymore. You must call
+ * eina_init() again to use the Eina functions again.
+ */
 EAPI int
 eina_shutdown(void)
 {
@@ -136,3 +206,6 @@ eina_shutdown(void)
    return --_eina_main_count;
 }
 
+/**
+ * @}
+ */
diff --git a/src/lib/eina_mempool.c b/src/lib/eina_mempool.c
index c28ec25..bfd55dd 100644
--- a/src/lib/eina_mempool.c
+++ b/src/lib/eina_mempool.c
@@ -35,6 +35,10 @@
  *                                  Local                                     *
  *============================================================================*/
 
+/**
+ * @cond LOCAL
+ */
+
 static Eina_Hash *_backends;
 static Eina_Array *_modules;
 static int _init_count = 0;
@@ -93,6 +97,10 @@ Eina_Bool fixed_bitmap_init(void);
 void fixed_bitmap_shutdown(void);
 #endif
 
+/**
+ * @endcond
+ */
+
 /*============================================================================*
  *                                 Global                                     *
  *============================================================================*/
@@ -111,11 +119,16 @@ EAPI void eina_mempool_unregister(Eina_Mempool_Backend *be)
  *                                   API                                      *
  *============================================================================*/
 
-EAPI Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE = 0;
-
 /**
+ * @addtogroup Eina_Memory_Pool_Group Memory Pool
+ *
+ * @brief These functions provide memory pool management.
  *
+ * @{
  */
+
+EAPI Eina_Error EINA_ERROR_NOT_MEMPOOL_MODULE = 0;
+
 EAPI int
 eina_mempool_init(void)
 {
@@ -184,9 +197,6 @@ eina_mempool_init(void)
 
 }
 
-/**
- *
- */
 EAPI int
 eina_mempool_shutdown(void)
 {
@@ -207,7 +217,7 @@ eina_mempool_shutdown(void)
 	ememoa_fixed_shutdown();
 #endif
 	/* dynamic backends */
-	eina_module_list_delete(_modules);
+	eina_module_list_flush(_modules);
 	if (_modules)
 	   eina_array_free(_modules);
 
@@ -220,11 +230,8 @@ eina_mempool_shutdown(void)
 	return 0;
 }
 
-/**
- *
- */
 EAPI Eina_Mempool *
-eina_mempool_new(const char *name, const char *context, const char *options, ...)
+eina_mempool_add(const char *name, const char *context, const char *options, ...)
 {
 	Eina_Mempool *mp;
 	va_list args;
@@ -238,10 +245,7 @@ eina_mempool_new(const char *name, const char *context, const char *options, ...
 	return mp;
 }
 
-/**
- *
- */
-EAPI void eina_mempool_delete(Eina_Mempool *mp)
+EAPI void eina_mempool_del(Eina_Mempool *mp)
 {
         EINA_SAFETY_ON_NULL_RETURN(mp);
 	EINA_SAFETY_ON_NULL_RETURN(mp->backend.shutdown);
@@ -262,3 +266,7 @@ EAPI void eina_mempool_statistics(Eina_Mempool *mp)
         EINA_SAFETY_ON_NULL_RETURN(mp->backend.statistics);
 	mp->backend.statistics(mp->backend_data);
 }
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_module.c b/src/lib/eina_module.c
index 6abd6ed..aa6cdbc 100644
--- a/src/lib/eina_module.c
+++ b/src/lib/eina_module.c
@@ -66,11 +66,11 @@ void *alloca (size_t);
  * @cond LOCAL
  */
 
-#ifdef _WIN32
+#if defined(_WIN32) || defined(__CYGWIN__)
 # define MODULE_EXTENSION ".dll"
 #else
 # define MODULE_EXTENSION ".so"
-#endif /* ! _WIN32 */
+#endif /* !defined(_WIN32) && !defined(__CYGWIN__) */
 
 #define EINA_MODULE_SYMBOL_INIT "__eina_module_init"
 #define EINA_MODULE_SYMBOL_SHUTDOWN "__eina_module_shutdown"
@@ -140,7 +140,7 @@ static void _dir_list_cb(const char *name, const char *path, void *data)
 			return;
 		/* call the user provided cb on this module */
 		if (!cb_data->cb(m, cb_data->data))
-		  eina_module_delete(m);
+		  eina_module_free(m);
 	}
 }
 static int _eina_module_count = 0;
@@ -149,6 +149,7 @@ static int _eina_module_count = 0;
  * @endcond
  */
 
+
 /*============================================================================*
  *                                 Global                                     *
  *============================================================================*/
@@ -158,8 +159,32 @@ static int _eina_module_count = 0;
  *============================================================================*/
 
 /**
- * To be documented
- * FIXME: To be fixed
+ * @addtogroup Eina_Module_Group Module
+ *
+ * @brief These functions provide module management.
+ *
+ * @{
+ */
+
+/**
+ * @brief Initialize the eina module internal structure.
+ *
+ * @return 1 or greater on success, 0 on error.
+ *
+ * This function sets up the module module of Eina. It also registers
+ * the errors #EINA_ERROR_WRONG_MODULE and
+ * #EINA_ERROR_MODULE_INIT_FAILED. It is also called by
+ * eina_init(). It returns 0 on failure, otherwise it returns the
+ * number of times it has already been called. See eina_error_init()
+ * for the documentation of the initialisation of the dependency
+ * modules.
+ *
+ * Once the module module is not used anymore, then
+ * eina_module_shutdown() must be called to shut down the module
+ * module.
+ *
+ * @see eina_error_init()
+ * @see eina_init()
  */
 EAPI int
 eina_module_init(void)
@@ -169,7 +194,11 @@ eina_module_init(void)
 	if (_eina_module_count != 1)
 		goto end_init;
 
-	eina_error_init();
+	if (!eina_error_init())
+	{
+		fprintf(stderr, "Could not initialize eina error module.\n");
+		return 0;
+	}
 
 	EINA_ERROR_WRONG_MODULE = eina_error_msg_register("Wrong file format or no file module found");
 	EINA_ERROR_MODULE_INIT_FAILED = eina_error_msg_register("Module initialisation function failed");
@@ -177,9 +206,20 @@ eina_module_init(void)
 end_init:
 	return _eina_module_count;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * @brief Shut down the eina module internal structures
+ *
+ * @return 0 when the module module is completely shut down, 1 or
+ * greater otherwise.
+ *
+ * This function shuts down the module module set up by
+ * eina_module_init(). It is called by eina_shutdown(). It
+ * returns 0 when it is called the same number of times than
+ * eina_module_init().
+ *
+ * @see eina_error_shutdown()
+ * @see eina_shutdown()
  */
 EAPI int
 eina_module_shutdown(void)
@@ -197,9 +237,82 @@ eina_module_shutdown(void)
 end_shutdown:
 	return _eina_module_count;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * @brief Return a new module.
+ *
+ * @param file The name of the file module to load.
+ *
+ * This function returns a new module. If @p file is @c NULL, the
+ * function returns @c NULL, otherwise, it allocates an Eina_Module,
+ * stores a duplicate string of @p file, sets its reference to @c 0
+ * and its handle to @c NULL.
+ *
+ * When the new module is not needed anymore, use eina_module_free()
+ * to free the allocated memory.
+ *
+ * @see eina_module_load
+ */
+EAPI Eina_Module *eina_module_new(const char *file)
+{
+	Eina_Module *m;
+
+	EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
+	/* TODO check that the file exists. Update doc too */
+
+	m = malloc(sizeof(Eina_Module));
+	/* TODO add the magic */
+	m->file = strdup(file);
+	m->ref = 0;
+	m->handle = NULL;
+
+	return m;
+}
+
+/**
+ * @brief Delete a module.
+ *
+ * @param m The module to delete.
+ * @return EINA_TRUE on success, EINA_FALSE otherwise.
+ *
+ * This function calls eina_module_unload() if @p m has been previously
+ * loaded and frees the allocated memory. On success this function
+ * returns EINA_TRUE and EINA_FALSE otherwise. If @p m is @c NULL, the
+ * function returns immediatly.
+ */
+EAPI Eina_Bool eina_module_free(Eina_Module *m)
+{
+	EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
+
+	if (m->handle)
+	{
+		if (eina_module_unload(m) == EINA_FALSE)
+			return EINA_FALSE;
+	}
+	free(m->file);
+	free(m);
+	return EINA_TRUE;
+}
+
+/**
+ * @brief Load a module.
+ *
+ * @param m The module to load.
+ * @return EINA_TRUE on success, EINA_FALSE otherwise.
+ *
+ * This function load the shared file object passed in
+ * eina_module_new(). If it is a internal Eina module (like the
+ * mempools), it also initialize it. It the shared file object can not
+ * be loaded, the error #EINA_ERROR_WRONG_MODULE is set and
+ * #EINA_FALSE is returned. If it is a internal Eina module and the
+ * module can not be initialized, the error
+ * #EINA_ERROR_MODULE_INIT_FAILED is set and #EINA_FALSE is
+ * returned. If the module has already been loaded, it's refeence
+ * counter is increased by one and #EINA_TRUE is returned. If @p m is
+ * @c NULL, the function returns immediatly #EINA_FALSE.
+ *
+ * When the symbols of the shared file objetcts are not needed
+ * anymore, call eina_module_unload() to unload the module.
  */
 EAPI Eina_Bool eina_module_load(Eina_Module *m)
 {
@@ -210,12 +323,14 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m)
 
 	if (m->handle) goto loaded;
 
-	eina_error_set(EINA_ERROR_WRONG_MODULE);
-
 	dl_handle = dlopen(m->file, RTLD_NOW);
-	if (!dl_handle) return EINA_FALSE;
-
-	eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
+	if (!dl_handle)
+	  {
+	     EINA_ERROR_PDBG("could not dlopen(\"%s\", RTLD_NOW): %s\n",
+			     m->file, dlerror());
+	     eina_error_set(EINA_ERROR_WRONG_MODULE);
+	     return EINA_FALSE;
+	  }
 
 	initcall = dlsym(dl_handle, EINA_MODULE_SYMBOL_INIT);
 	if ((!initcall) || (!(*initcall)))
@@ -223,6 +338,7 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m)
 	if ((*initcall)() == EINA_TRUE)
 		goto ok;
 
+	eina_error_set(EINA_ERROR_MODULE_INIT_FAILED);
 	dlclose(dl_handle);
 	return EINA_FALSE;
 ok:
@@ -233,9 +349,20 @@ loaded:
 	eina_error_set(0);
 	return EINA_TRUE;
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * @brief Unload a module.
+ *
+ * @param m The module to load.
+ * @return EINA_TRUE on success, EINA_FALSE otherwise.
+ *
+ * This function unload the module @p m that has been previously
+ * loaded by eina_module_load(). If the reference counter of @p m is
+ * strictly greater than @c 1, #EINA_FALSE is returned. Otherwise, the
+ * shared object file is closed and if it is a internal Eina module, it
+ * is shutted down just before. In that case, #EINA_TRUE is
+ * returned. In all case, the reference counter is decreased. If @p m
+ * is @c NULL, the function returns immediatly #EINA_FALSE.
  */
 EAPI Eina_Bool eina_module_unload(Eina_Module *m)
 {
@@ -254,45 +381,18 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m)
 	}
 	return EINA_FALSE;
 }
-/**
- * To be documented
- * FIXME: To be fixed
- */
-EAPI Eina_Module * eina_module_new(const char *file)
-{
-	Eina_Module *m;
-
-	EINA_SAFETY_ON_NULL_RETURN_VAL(file, NULL);
-	/* TODO check that the file exists */
-
-	m = malloc(sizeof(Eina_Module));
-	/* TODO add the magic */
-	m->file = strdup(file);
-	m->ref = 0;
-	m->handle = NULL;
-
-	return m;
-}
-/**
- * To be documented
- * FIXME: To be fixed
- */
-EAPI Eina_Bool eina_module_delete(Eina_Module *m)
-{
-	EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE);
 
-	if (m->handle)
-	{
-		if (eina_module_unload(m) == EINA_FALSE)
-			return EINA_FALSE;
-	}
-	free(m->file);
-	free(m);
-	return EINA_TRUE;
-}
 /**
- * To be documented
- * FIXME: To be fixed
+ * @brief Retrive the data associated to a symbol.
+ *
+ * @param The module.
+ * @param symbol The symbol.
+ * @return The data associated to the symbol, or @c NULL on failure.
+ *
+ * This function returns the data associated to @p symbol of @p m. @p
+ * m must have been loaded before with eina_module_load(). If @p m
+ * is @c NULL, or if it has not been correctly loaded before, the
+ * function returns immediatly @c NULL.
  */
 EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol)
 {
@@ -300,9 +400,16 @@ EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol)
 	EINA_SAFETY_ON_NULL_RETURN_VAL(m->handle, NULL);
 	return dlsym(m->handle, symbol);
 }
+
 /**
- * To be documented
- * FIXME: To be fixed
+ * @brief Return the file name associated to the module.
+ *
+ * @param m The module.
+ * @return The file name.
+ *
+ * Return the file name passed in eina_module_new(). If @p m is
+ * @c NULL, the function returns immediatly @c NULL. The returned
+ * value must no be freed.
  */
 EAPI const char * eina_module_file_get(Eina_Module *m)
 {
@@ -379,7 +486,7 @@ EAPI char *eina_module_environment_path_get(const char *env, const char *sub_dir
 }
 
 /**
- * Gets a list of modules found on the directory path
+ * Get a list of modules found on the directory path
  *
  * @param path The directory's path to search for modules
  * @param recursive Iterate recursively on the path
@@ -405,6 +512,7 @@ EAPI Eina_Array * eina_module_list_get(Eina_Array *array, const char *path, unsi
 
 	return list_get_cb_data.array;
 }
+
 /**
  * Load every module on the list of modules
  * @param list The list of modules
@@ -420,10 +528,7 @@ EAPI void eina_module_list_load(Eina_Array *array)
 	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
 		eina_module_load(m);
 }
-/**
- * To be documented
- * FIXME: To be fixed
- */
+
 EAPI void eina_module_list_unload(Eina_Array *array)
 {
 	Eina_Array_Iterator iterator;
@@ -435,11 +540,12 @@ EAPI void eina_module_list_unload(Eina_Array *array)
 	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
 		eina_module_unload(m);
 }
+
 /**
  * Helper function that iterates over the list of modules and calls
- * eina_module_delete on each
+ * eina_module_free on each
  */
-EAPI void eina_module_list_delete(Eina_Array *array)
+EAPI void eina_module_list_flush(Eina_Array *array)
 {
 	Eina_Array_Iterator iterator;
 	Eina_Module *m;
@@ -448,7 +554,11 @@ EAPI void eina_module_list_delete(Eina_Array *array)
 	EINA_SAFETY_ON_NULL_RETURN(array);
 
 	EINA_ARRAY_ITER_NEXT(array, i, m, iterator)
-		eina_module_delete(m);
+		eina_module_free(m);
 
 	eina_array_flush(array);
 }
+
+/**
+ * @}
+ */
diff --git a/src/lib/eina_rectangle.c b/src/lib/eina_rectangle.c
index d09474a..43babe8 100644
--- a/src/lib/eina_rectangle.c
+++ b/src/lib/eina_rectangle.c
@@ -30,6 +30,7 @@
 #include "eina_private.h"
 #include "eina_safety_checks.h"
 #include "eina_mempool.h"
+#include "eina_list.h"
 
 /*============================================================================*
  *                                  Local                                     *
@@ -47,11 +48,14 @@ typedef struct _Eina_Rectangle_Alloc Eina_Rectangle_Alloc;
 struct _Eina_Rectangle_Pool
 {
    Eina_Inlist *head;
+   Eina_List *empty;
    void *data;
 
    unsigned int references;
    int w;
    int h;
+
+   Eina_Bool sorted;
    EINA_MAGIC
 };
 
@@ -75,124 +79,135 @@ struct _Eina_Rectangle_Alloc
   } while (0);
 
 static int _eina_rectangle_init_count = 0;
+static Eina_Mempool *_eina_rectangle_alloc_mp = NULL;
 static Eina_Mempool *_eina_rectangle_mp = NULL;
 
-static inline Eina_Bool
-_eina_rectangle_pool_collide(Eina_Rectangle_Alloc *head, Eina_Rectangle_Alloc *current, Eina_Rectangle *test)
+static int
+_eina_rectangle_cmp(const Eina_Rectangle *r1, const Eina_Rectangle *r2)
 {
-   Eina_Rectangle_Alloc *collide;
-
-   EINA_INLIST_FOREACH(head, collide)
-     {
-	Eina_Rectangle *colliding_rect = (Eina_Rectangle*) (collide + 1);
-
-	if (collide == current) continue;
-	if (eina_rectangles_intersect(colliding_rect, test))
-	  return EINA_TRUE;
-     }
-
-   return EINA_FALSE;
+   return (r2->w * r2->h) - (r1->w * r1->h);
 }
 
-static Eina_Bool
-_eina_rectangle_pool_find(Eina_Rectangle_Alloc *head, int poolw, int poolh, int w, int h, int *x, int *y)
+static Eina_List *
+_eina_rectangle_merge_list(Eina_List *empty, Eina_Rectangle *r)
 {
-   Eina_Rectangle_Alloc *item;
-   Eina_Rectangle tmp = { 0, 0, 0, 0 };
+   Eina_Rectangle *match;
+   Eina_List *l;
+   int xw;
+   int yh;
 
-   if (head == NULL) goto on_intersect;
+   if (r->w == 0 || r->h == 0)
+     {
+	eina_rectangle_free(r);
+	return empty;
+     }
+
+ start_again:
+   xw = r->x + r->w;
+   yh = r->y + r->h;
 
-   EINA_INLIST_FOREACH(head, item)
+   EINA_LIST_FOREACH(empty, l, match)
      {
-	Eina_Rectangle *rect = (Eina_Rectangle*) (item + 1);
-	Eina_Bool t1 = EINA_TRUE;
-	Eina_Bool t2 = EINA_TRUE;
-	Eina_Bool t3 = EINA_TRUE;
-	Eina_Bool t4 = EINA_TRUE;
-
-	if ((rect->x + rect->w + w) > poolw) t1 = EINA_FALSE;
-	if ((rect->y + h) > poolh) t1 = EINA_FALSE;
-	if ((rect->y + rect->h + h) > poolh) t2 = EINA_FALSE;
-	if ((rect->x + w) > poolw) t2 = EINA_FALSE;
-	if ((rect->x - w) < 0) t3 = EINA_FALSE;
-	if ((rect->y + h) > poolh) t3 = EINA_FALSE;
-	if ((rect->x + w) > poolw) t4 = EINA_FALSE;
-	if ((rect->y - h) < 0) t4 = EINA_FALSE;
-
-	if (t1)
-	  {
-	     Eina_Bool intersects;
-	     /* 1. try here:
-	      * +----++--+
-	      * |AAAA||??|
-	      * |AAAA|+--+
-	      * |AAAA|
-	      * +----+
-	      */
-	     eina_rectangle_coords_from(&tmp, rect->x + rect->w, rect->y, w, h);
-	     intersects = _eina_rectangle_pool_collide(head, item, &tmp);
-
-	     if (!intersects) goto on_intersect;
-	  }
-	if (t2)
+	if (match->x == r->x && match->w == r->w
+	    && (match->y == yh || r->y == match->y + match->h))
 	  {
-	     Eina_Bool intersects;
-	     /* 2. try here:
-	      * +----+
-	      * |AAAA|
-	      * |AAAA|
-	      * |AAAA|
-	      * +----+
-	      * +--+
-	      * |??|
-	      * +--+
-	      */
-	     eina_rectangle_coords_from(&tmp, rect->x, rect->y + rect->h, w, h);
-	     intersects = _eina_rectangle_pool_collide(head, item, &tmp);
-
-	     if (!intersects) goto on_intersect;
+	     if (match->y > r->y)
+	       match->y = r->y;
+	     match->h += r->h;
+
+	     eina_rectangle_free(r);
+
+	     empty = eina_list_remove_list(empty, l);
+
+	     r = match;
+
+	     goto start_again;
 	  }
-	if (t3)
+	else if (match->y == r->y && match->h == r->h
+		 && (match->x == xw || r->x == match->x + match->w))
 	  {
-	     Eina_Bool intersects;
-	     /* 3. try here:
-	      * +--++----+
-	      * |??||AAAA|
-	      * +--+|AAAA|
-	      *     |AAAA|
-	      *     +----+
-	      */
-	     eina_rectangle_coords_from(&tmp, rect->x - w, rect->y, w, h);
-	     intersects = _eina_rectangle_pool_collide(head, item, &tmp);
-
-	     if (!intersects) goto on_intersect;
+	     if (match->x > r->x)
+	       match->x = r->x;
+	     match->w += r->w;
+
+	     eina_rectangle_free(r);
+
+	     empty = eina_list_remove_list(empty, l);
+
+	     r = match;
+
+	     goto start_again;
 	  }
-	if (t4)
+     }
+
+   return eina_list_append(empty, r);
+}
+
+static Eina_List *
+_eina_rectangle_empty_space_find(Eina_List *empty, int w, int h, int *x, int *y)
+{
+   Eina_Rectangle *r;
+   Eina_List *l;
+
+   EINA_LIST_FOREACH(empty, l, r)
+     {
+	if (r->w >= w && r->h >= h)
 	  {
-	     Eina_Bool intersects;
-	     /* 2. try here:
-	      * +--+
-	      * |??|
-	      * +--+
-	      * +----+
-	      * |AAAA|
-	      * |AAAA|
-	      * |AAAA|
-	      * +----+
-	      */
-	     eina_rectangle_coords_from(&tmp, rect->x, rect->y - h, w, h);
-	     intersects = _eina_rectangle_pool_collide(head, item, &tmp);
-
-	     if (!intersects) goto on_intersect;
+	     /* Remove l from empty */
+	     empty = eina_list_remove_list(empty, l);
+	     /* Remember x and y */
+	     *x = r->x;
+	     *y = r->y;
+	     /* Split r in 2 rectangle if needed (only the empty one) and insert them */
+	     if (r->w == w)
+	       {
+		  r->y += h;
+		  r->h -= h;
+	       }
+	     else if (r->h == h)
+	       {
+		  r->x += w;
+		  r->w -= w;
+	       }
+	     else
+	       {
+		  int x1, y1, w1, h1;
+		  int x2, y2, w2, h2;
+
+		  x1 = r->x + w;
+		  y1 = r->y;
+		  w1 = r->w - w;
+		  /* h1 could be h or r->h */
+		  x2 = r->x;
+		  y2 = r->y + h;
+		  /* w2 could be w or r->w */
+		  h2 = r->h - h;
+
+		  if (w1 * r->h > h2 * r->w)
+		    {
+		       h1 = r->h;
+		       w2 = w;
+		    }
+		  else
+		    {
+		       h1 = h;
+		       w2 = r->w;
+		    }
+
+		  EINA_RECTANGLE_SET(r, x1, y1, w1, h1);
+		  empty = _eina_rectangle_merge_list(empty, r);
+
+		  r = eina_rectangle_new(x2, y2, w2, h2);
+	       }
+	     if (r) empty = _eina_rectangle_merge_list(empty, r);
+	     /* Return empty */
+	     return empty;
 	  }
      }
 
-   return EINA_FALSE;
-
- on_intersect:
-   *x = tmp.x;
-   *y = tmp.y;
-   return EINA_TRUE;
+   *x = -1;
+   *y = -1;
+   return empty;
 }
 
 /**
@@ -207,8 +222,106 @@ _eina_rectangle_pool_find(Eina_Rectangle_Alloc *head, int poolw, int poolh, int
  *                                   API                                      *
  *============================================================================*/
 
+EAPI int
+eina_rectangle_init(void)
+{
+   const char *choice;
+
+   _eina_rectangle_init_count++;
+
+   if (_eina_rectangle_init_count > 1) return _eina_rectangle_init_count;
+
+   if (!eina_error_init())
+     {
+        EINA_ERROR_PERR("Could not initialize eina error module.\n");
+        return 0;
+     }
+   if (!eina_mempool_init())
+     {
+        EINA_ERROR_PERR("Could not initialize eina mempool module.\n");
+        goto mempool_init_error;
+     }
+
+   if (!eina_list_init())
+     {
+	EINA_ERROR_PERR("Could not initialize eina list module.\n");
+	goto list_init_error;
+     }
+
+#ifdef EINA_DEFAULT_MEMPOOL
+   choice = "pass_through";
+#else
+   if (!(choice = getenv("EINA_MEMPOOL")))
+     choice = "chained_mempool";
+#endif
+
+   _eina_rectangle_alloc_mp = eina_mempool_add(choice, "rectangle-alloc", NULL,
+                                         sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle), 1024);
+   if (!_eina_rectangle_alloc_mp)
+     {
+        EINA_ERROR_PERR("ERROR: Mempool for rectangle cannot be allocated in list init.\n");
+        goto init_error;
+     }
+
+   _eina_rectangle_mp = eina_mempool_add(choice, "rectangle", NULL, sizeof (Eina_Rectangle), 256);
+   if (!_eina_rectangle_mp)
+     {
+        EINA_ERROR_PERR("ERROR: Mempool for rectangle cannot be allocated in list init.\n");
+        goto init_error;
+     }
+
+   return _eina_rectangle_init_count;
+
+ init_error:
+   eina_list_shutdown();
+ list_init_error:
+   eina_mempool_shutdown();
+ mempool_init_error:
+   eina_error_shutdown();
+
+   return 0;
+}
+
+EAPI int
+eina_rectangle_shutdown(void)
+{
+   --_eina_rectangle_init_count;
+
+   if (_eina_rectangle_init_count) return _eina_rectangle_init_count;
+
+   eina_list_shutdown();
+
+   eina_mempool_del(_eina_rectangle_alloc_mp);
+   eina_mempool_del(_eina_rectangle_mp);
+
+   eina_mempool_shutdown();
+   eina_error_shutdown();
+
+   return 0;
+}
+
+EAPI Eina_Rectangle *
+eina_rectangle_new(int x, int y, int w, int h)
+{
+   Eina_Rectangle *rect;
+
+   rect = eina_mempool_malloc(_eina_rectangle_mp, sizeof (Eina_Rectangle));
+   if (!rect) return NULL;
+
+   EINA_RECTANGLE_SET(rect, x, y, w, h);
+
+   return rect;
+}
+
+EAPI void
+eina_rectangle_free(Eina_Rectangle *rect)
+{
+   EINA_SAFETY_ON_NULL_RETURN(rect);
+   eina_mempool_free(_eina_rectangle_mp, rect);
+}
+
 EAPI Eina_Rectangle_Pool *
-eina_rectangle_pool_add(int w, int h)
+eina_rectangle_pool_new(int w, int h)
 {
    Eina_Rectangle_Pool *new;
 
@@ -216,6 +329,7 @@ eina_rectangle_pool_add(int w, int h)
    if (!new) return NULL;
 
    new->head = NULL;
+   new->empty = eina_list_append(NULL, eina_rectangle_new(0, 0, w, h));
    new->references = 0;
    new->w = w;
    new->h = h;
@@ -226,7 +340,7 @@ eina_rectangle_pool_add(int w, int h)
 }
 
 EAPI void
-eina_rectangle_pool_delete(Eina_Rectangle_Pool *pool)
+eina_rectangle_pool_free(Eina_Rectangle_Pool *pool)
 {
    Eina_Rectangle_Alloc *del;
 
@@ -238,7 +352,7 @@ eina_rectangle_pool_delete(Eina_Rectangle_Pool *pool)
 	pool->head = (EINA_INLIST_GET(del))->next;
 
 	EINA_MAGIC_SET(del, EINA_MAGIC_NONE);
-	eina_mempool_free(_eina_rectangle_mp, del);
+	eina_mempool_free(_eina_rectangle_alloc_mp, del);
      }
 
    MAGIC_FREE(pool);
@@ -256,19 +370,27 @@ eina_rectangle_pool_request(Eina_Rectangle_Pool *pool, int w, int h)
 {
    Eina_Rectangle_Alloc *new;
    Eina_Rectangle *rect;
-   Eina_Bool test;
    int x;
    int y;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(pool, NULL);
 
+   if (w <= 0 || h <= 0) return NULL;
    if (w > pool->w || h > pool->h) return NULL;
 
-   test = _eina_rectangle_pool_find((Eina_Rectangle_Alloc*) pool->head, pool->w, pool->h, w, h, &x, &y);
-   if (!test) return NULL;
+   /* Sort empty if dirty */
+   if (pool->sorted)
+     {
+	pool->empty = eina_list_sort(pool->empty, 0, EINA_COMPARE_CB(_eina_rectangle_cmp));
+	pool->sorted = EINA_TRUE;
+     }
+
+   pool->empty = _eina_rectangle_empty_space_find(pool->empty, w, h, &x, &y);
+   if (x == -1) return NULL;
+   pool->sorted = EINA_FALSE;
 
-   new = eina_mempool_alloc(_eina_rectangle_mp,
-			    sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle));
+   new = eina_mempool_malloc(_eina_rectangle_alloc_mp,
+			     sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle));
    if (!new) return NULL;
 
    rect = (Eina_Rectangle*) (new + 1);
@@ -288,6 +410,7 @@ EAPI void
 eina_rectangle_pool_release(Eina_Rectangle *rect)
 {
    Eina_Rectangle_Alloc *era = ((Eina_Rectangle_Alloc *) rect) - 1;
+   Eina_Rectangle *r;
 
    EINA_SAFETY_ON_NULL_RETURN(rect);
 
@@ -297,8 +420,15 @@ eina_rectangle_pool_release(Eina_Rectangle *rect)
    era->pool->references--;
    era->pool->head = eina_inlist_remove(era->pool->head, EINA_INLIST_GET(era));
 
+   r = eina_rectangle_new(rect->x, rect->y, rect->w, rect->h);
+   if (r)
+     {
+	era->pool->empty = _eina_rectangle_merge_list(era->pool->empty, r);
+	era->pool->sorted = EINA_FALSE;
+     }
+
    EINA_MAGIC_SET(era, EINA_MAGIC_NONE);
-   eina_mempool_free(_eina_rectangle_mp, era);
+   eina_mempool_free(_eina_rectangle_alloc_mp, era);
 }
 
 EAPI Eina_Rectangle_Pool *
@@ -346,63 +476,3 @@ eina_rectangle_pool_geometry_get(Eina_Rectangle_Pool *pool, int *w, int *h)
    return EINA_TRUE;
 }
 
-EAPI int
-eina_rectangle_init(void)
-{
-   const char *choice;
-
-   _eina_rectangle_init_count++;
-
-   if (_eina_rectangle_init_count > 1) return _eina_rectangle_init_count;
-
-   if (!eina_error_init())
-     {
-        fprintf(stderr, "Could not initialize eina error module.\n");
-        return 0;
-     }
-   if (!eina_mempool_init())
-     {
-        EINA_ERROR_PERR("Could not initialize eina mempool module.\n");
-        goto mempool_init_error;
-     }
-
-#ifdef EINA_DEFAULT_MEMPOOL
-   choice = "pass_through";
-#else
-   if (!(choice = getenv("EINA_MEMPOOL")))
-     choice = "chained_mempool";
-#endif
-
-   _eina_rectangle_mp = eina_mempool_new(choice, "rectangle", NULL,
-                                         sizeof (Eina_Rectangle_Alloc) + sizeof (Eina_Rectangle), 42);
-   if (!_eina_rectangle_mp)
-     {
-        EINA_ERROR_PERR("ERROR: Mempool for rectangle cannot be allocated in list init.\n");
-        goto init_error;
-     }
-
-   return _eina_rectangle_init_count;
-
- init_error:
-   eina_mempool_shutdown();
- mempool_init_error:
-   eina_error_shutdown();
-
-   return 0;
-}
-
-EAPI int
-eina_rectangle_shutdown(void)
-{
-   --_eina_rectangle_init_count;
-
-   if (_eina_rectangle_init_count) return _eina_rectangle_init_count;
-
-   eina_mempool_delete(_eina_rectangle_mp);
-
-   eina_mempool_shutdown();
-   eina_error_shutdown();
-
-   return 0;
-}
-
diff --git a/src/lib/eina_stringshare.c b/src/lib/eina_stringshare.c
index a165768..5e3c62a 100644
--- a/src/lib/eina_stringshare.c
+++ b/src/lib/eina_stringshare.c
@@ -777,12 +777,6 @@ _eina_stringshare_node_alloc(int slen)
  *============================================================================*/
 
 /**
- * @addtogroup Eina_Data_Types_Group Data Types
- *
- * @{
- */
-
-/**
  * @addtogroup Eina_Stringshare_Group Stringshare
  *
  * These functions allow you to store one copy of a string, and use it
@@ -1293,7 +1287,3 @@ eina_stringshare_dump(void)
 /**
  * @}
  */
-
-/**
- * @}
- */
diff --git a/src/lib/eina_tiler.c b/src/lib/eina_tiler.c
index e32e3da..78328ff 100644
--- a/src/lib/eina_tiler.c
+++ b/src/lib/eina_tiler.c
@@ -1111,7 +1111,7 @@ EAPI Eina_Tiler *eina_tiler_new(int w, int h)
  * To be documented
  * FIXME: To be fixed
  */
-EAPI void eina_tiler_del(Eina_Tiler *t)
+EAPI void eina_tiler_free(Eina_Tiler *t)
 {
 	EINA_MAGIC_CHECK_TILER(t);
 	_splitter_del(t);
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index e4fd501..0cdc061 100644
--- a/src/modules/Makefile.in
+++ b/src/modules/Makefile.in
@@ -39,10 +39,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -100,6 +100,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
diff --git a/src/modules/mp/Makefile.in b/src/modules/mp/Makefile.in
index 13cb5e2..686408a 100644
--- a/src/modules/mp/Makefile.in
+++ b/src/modules/mp/Makefile.in
@@ -39,10 +39,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -100,6 +100,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
diff --git a/src/modules/mp/chained_pool/Makefile.am b/src/modules/mp/chained_pool/Makefile.am
index b3b9aaa..c6ad9b4 100644
--- a/src/modules/mp/chained_pool/Makefile.am
+++ b/src/modules/mp/chained_pool/Makefile.am
@@ -4,8 +4,11 @@ AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
- at EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
+ at EINA_CPPFLAGS@ \
+ at EINA_CFLAGS@ \
+ at EFL_PTHREAD_CFLAGS@
 
+if EINA_BUILD_CHAINED_POOL
 if !EINA_STATIC_BUILD_CHAINED_POOL
 
 controllerdir = $(libdir)/eina/mp
@@ -19,6 +22,7 @@ eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module
 eina_chained_mempool_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
+endif
 
 clean-local:
 	rm -rf *.gcno
diff --git a/src/modules/mp/chained_pool/Makefile.in b/src/modules/mp/chained_pool/Makefile.in
index ecfefe2..21523d0 100644
--- a/src/modules/mp/chained_pool/Makefile.in
+++ b/src/modules/mp/chained_pool/Makefile.in
@@ -40,10 +40,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,17 +58,17 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(controllerdir)"
 controllerLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(controller_LTLIBRARIES)
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
 am__eina_chained_mempool_la_SOURCES_DIST = eina_chained_mempool.c
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@am_eina_chained_mempool_la_OBJECTS = eina_chained_mempool_la-eina_chained_mempool.lo
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at am_eina_chained_mempool_la_OBJECTS = eina_chained_mempool_la-eina_chained_mempool.lo
 eina_chained_mempool_la_OBJECTS =  \
 	$(am_eina_chained_mempool_la_OBJECTS)
 eina_chained_mempool_la_LINK = $(LIBTOOL) --tag=CC \
 	$(eina_chained_mempool_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(eina_chained_mempool_la_LDFLAGS) $(LDFLAGS) -o $@
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@am_eina_chained_mempool_la_rpath =  \
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@	-rpath $(controllerdir)
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at am_eina_chained_mempool_la_rpath = -rpath \
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -123,6 +123,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -235,16 +236,18 @@ AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
- at EINA_CFLAGS@ @EFL_PTHREAD_CFLAGS@
-
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@controllerdir = $(libdir)/eina/mp
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@controller_LTLIBRARIES = eina_chained_mempool.la
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool_la_SOURCES = \
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool.c
-
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EFL_PTHREAD_LIBS@
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
- at EINA_STATIC_BUILD_CHAINED_POOL_FALSE@eina_chained_mempool_la_LIBTOOLFLAGS = --tag=disable-static
+ at EINA_CPPFLAGS@ \
+ at EINA_CFLAGS@ \
+ at EFL_PTHREAD_CFLAGS@
+
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at controllerdir = $(libdir)/eina/mp
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at controller_LTLIBRARIES = eina_chained_mempool.la
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_SOURCES = \
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool.c
+
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EFL_PTHREAD_LIBS@
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_CHAINED_POOL_TRUE@@EINA_STATIC_BUILD_CHAINED_POOL_FALSE at eina_chained_mempool_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
 .SUFFIXES:
diff --git a/src/modules/mp/chained_pool/eina_chained_mempool.c b/src/modules/mp/chained_pool/eina_chained_mempool.c
index 4c2c8af..7d82195 100644
--- a/src/modules/mp/chained_pool/eina_chained_mempool.c
+++ b/src/modules/mp/chained_pool/eina_chained_mempool.c
@@ -34,6 +34,7 @@
 #include "eina_error.h"
 #include "eina_module.h"
 #include "eina_mempool.h"
+#include "eina_trash.h"
 
 #include "eina_private.h"
 
@@ -54,7 +55,7 @@ typedef struct _Chained_Pool Chained_Pool;
 struct _Chained_Pool
 {
    EINA_INLIST;
-   void *base;
+   Eina_Trash *base;
    int usage;
 };
 
@@ -62,20 +63,16 @@ static inline Chained_Pool *
 _eina_chained_mp_pool_new(Chained_Mempool *pool)
 {
    Chained_Pool *p;
-   void **ptr;
+   unsigned char *ptr;
    int item_alloc, i;
 
    item_alloc = ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
    p = malloc(sizeof(Chained_Pool) + (pool->pool_size * item_alloc));
-   ptr = (void **)(((unsigned char *)p) + sizeof(Chained_Pool));
+   ptr = (unsigned char *) (p + 1);
    p->usage = 0;
-   p->base = ptr;
-   for (i = 0; i < pool->pool_size - 1; i++)
-     {
-	*ptr = (void **)(((unsigned char *)ptr) + item_alloc);
-	ptr = *ptr;
-     }
-   *ptr = NULL;
+   p->base = NULL;
+   for (i = 0; i < pool->pool_size; ++i, ptr += item_alloc)
+     eina_trash_push(&p->base, ptr);
    return p;
 }
 
@@ -120,10 +117,8 @@ eina_chained_mempool_malloc(void *data, __UNUSED__ unsigned int size)
 	  }
 	pool->first = eina_inlist_prepend(pool->first, EINA_INLIST_GET(p));
      }
-   // this points to the next free block - so take it
-   mem = p->base;
-   // base now points to the next free block
-   p->base = *((void **)mem);
+   // Request a free pointer
+   mem = eina_trash_pop(&p->base);
    // move to end - it just filled up
    if (!p->base)
      {
@@ -162,9 +157,8 @@ eina_chained_mempool_free(void *data, void *ptr)
 	if ((ptr >= pmem) && ((unsigned char *)ptr < (((unsigned char *)pmem) + psize)))
 	  {
 	     // freed node points to prev free node
-	     *((void **)ptr) = p->base;
+	     eina_trash_push(&p->base, ptr);
 	     // next free node is now the one we freed
-	     p->base = ptr;
 	     p->usage--;
 	     pool->usage--;
 	     if (p->usage == 0)
diff --git a/src/modules/mp/ememoa_fixed/Makefile.am b/src/modules/mp/ememoa_fixed/Makefile.am
index 5c479a7..9d264fd 100644
--- a/src/modules/mp/ememoa_fixed/Makefile.am
+++ b/src/modules/mp/ememoa_fixed/Makefile.am
@@ -1,15 +1,14 @@
-MAINTAINERCLEANFILES = \
-Makefile.in
+MAINTAINERCLEANFILES = Makefile.in
 
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
 @EMEMOA_CFLAGS@
 
-if EINA_ENABLE_EMEMOA
-
+if EINA_BUILD_EMEMOA_FIXED
 if !EINA_STATIC_BUILD_EMEMOA_FIXED
 
 controllerdir = $(libdir)/eina/mp
@@ -23,7 +22,6 @@ eina_ememoa_fixed_la_LDFLAGS      = -no-undefined @lt_enable_auto_import@ -modul
 eina_ememoa_fixed_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
-
 endif
 
 clean-local:
diff --git a/src/modules/mp/ememoa_fixed/Makefile.in b/src/modules/mp/ememoa_fixed/Makefile.in
index fa10cba..c7703f5 100644
--- a/src/modules/mp/ememoa_fixed/Makefile.in
+++ b/src/modules/mp/ememoa_fixed/Makefile.in
@@ -40,10 +40,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,16 +58,16 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(controllerdir)"
 controllerLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(controller_LTLIBRARIES)
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
 am__eina_ememoa_fixed_la_SOURCES_DIST = eina_ememoa_fixed.c
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at am_eina_ememoa_fixed_la_OBJECTS = eina_ememoa_fixed_la-eina_ememoa_fixed.lo
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at am_eina_ememoa_fixed_la_OBJECTS = eina_ememoa_fixed_la-eina_ememoa_fixed.lo
 eina_ememoa_fixed_la_OBJECTS = $(am_eina_ememoa_fixed_la_OBJECTS)
 eina_ememoa_fixed_la_LINK = $(LIBTOOL) --tag=CC \
 	$(eina_ememoa_fixed_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(eina_ememoa_fixed_la_LDFLAGS) $(LDFLAGS) -o $@
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at am_eina_ememoa_fixed_la_rpath = -rpath \
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE@	$(controllerdir)
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at am_eina_ememoa_fixed_la_rpath = -rpath \
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -122,6 +122,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -229,24 +230,23 @@ target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 version_info = @version_info@
-MAINTAINERCLEANFILES = \
-Makefile.in
-
+MAINTAINERCLEANFILES = Makefile.in
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
 @EMEMOA_CFLAGS@
 
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controllerdir = $(libdir)/eina/mp
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controller_LTLIBRARIES = eina_ememoa_fixed.la
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_SOURCES = \
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed.c
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controllerdir = $(libdir)/eina/mp
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at controller_LTLIBRARIES = eina_ememoa_fixed.la
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_SOURCES = \
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed.c
 
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EMEMOA_LIBS@
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LIBTOOLFLAGS = --tag=disable-static
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@ @EMEMOA_LIBS@
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_EMEMOA_FIXED_TRUE@@EINA_STATIC_BUILD_EMEMOA_FIXED_FALSE at eina_ememoa_fixed_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
 .SUFFIXES:
diff --git a/src/modules/mp/ememoa_unknown/Makefile.am b/src/modules/mp/ememoa_unknown/Makefile.am
index 61a183e..d593d90 100644
--- a/src/modules/mp/ememoa_unknown/Makefile.am
+++ b/src/modules/mp/ememoa_unknown/Makefile.am
@@ -1,15 +1,14 @@
-MAINTAINERCLEANFILES = \
-Makefile.in
+MAINTAINERCLEANFILES = Makefile.in
 
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
 @EMEMOA_CFLAGS@
 
-if EINA_ENABLE_EMEMOA
-
+if EINA_BUILD_EMEMOA_UNKNOWN
 if !EINA_STATIC_BUILD_EMEMOA_UNKNOWN
 
 controllerdir = $(libdir)/eina/mp
@@ -23,7 +22,6 @@ eina_ememoa_unknown_la_LDFLAGS      = -no-undefined @lt_enable_auto_import@ -mod
 eina_ememoa_unknown_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
-
 endif
 
 clean-local:
diff --git a/src/modules/mp/ememoa_unknown/Makefile.in b/src/modules/mp/ememoa_unknown/Makefile.in
index a61adca..017cd39 100644
--- a/src/modules/mp/ememoa_unknown/Makefile.in
+++ b/src/modules/mp/ememoa_unknown/Makefile.in
@@ -40,10 +40,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,16 +58,16 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(controllerdir)"
 controllerLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(controller_LTLIBRARIES)
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
 am__eina_ememoa_unknown_la_SOURCES_DIST = eina_ememoa_unknown.c
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at am_eina_ememoa_unknown_la_OBJECTS = eina_ememoa_unknown_la-eina_ememoa_unknown.lo
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at am_eina_ememoa_unknown_la_OBJECTS = eina_ememoa_unknown_la-eina_ememoa_unknown.lo
 eina_ememoa_unknown_la_OBJECTS = $(am_eina_ememoa_unknown_la_OBJECTS)
 eina_ememoa_unknown_la_LINK = $(LIBTOOL) --tag=CC \
 	$(eina_ememoa_unknown_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(eina_ememoa_unknown_la_LDFLAGS) $(LDFLAGS) -o $@
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at am_eina_ememoa_unknown_la_rpath = -rpath \
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE@	$(controllerdir)
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at am_eina_ememoa_unknown_la_rpath = -rpath \
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -122,6 +122,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -229,24 +230,23 @@ target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 version_info = @version_info@
-MAINTAINERCLEANFILES = \
-Makefile.in
-
+MAINTAINERCLEANFILES = Makefile.in
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@ \
 @EMEMOA_CFLAGS@
 
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controllerdir = $(libdir)/eina/mp
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controller_LTLIBRARIES = eina_ememoa_unknown.la
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_SOURCES = \
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown.c
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controllerdir = $(libdir)/eina/mp
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at controller_LTLIBRARIES = eina_ememoa_unknown.la
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_SOURCES = \
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown.c
 
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EMEMOA_LIBS@ @EINA_LIBS@
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
- at EINA_ENABLE_EMEMOA_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LIBTOOLFLAGS = --tag=disable-static
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EMEMOA_LIBS@ @EINA_LIBS@
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_EMEMOA_UNKNOWN_TRUE@@EINA_STATIC_BUILD_EMEMOA_UNKNOWN_FALSE at eina_ememoa_unknown_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
 .SUFFIXES:
diff --git a/src/modules/mp/fixed_bitmap/Makefile.am b/src/modules/mp/fixed_bitmap/Makefile.am
index e0dcb6b..87b9397 100644
--- a/src/modules/mp/fixed_bitmap/Makefile.am
+++ b/src/modules/mp/fixed_bitmap/Makefile.am
@@ -4,8 +4,10 @@ AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@
 
+if EINA_BUILD_FIXED_BITMAP
 if !EINA_STATIC_BUILD_FIXED_BITMAP
 
 controllerdir = $(libdir)/eina/mp
@@ -19,6 +21,7 @@ eina_fixed_bitmap_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -av
 eina_fixed_bitmap_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
+endif
 
 clean-local:
 	rm -rf *.gcno
diff --git a/src/modules/mp/fixed_bitmap/Makefile.in b/src/modules/mp/fixed_bitmap/Makefile.in
index 6a1bfb7..a428fd3 100644
--- a/src/modules/mp/fixed_bitmap/Makefile.in
+++ b/src/modules/mp/fixed_bitmap/Makefile.in
@@ -40,10 +40,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,16 +58,16 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(controllerdir)"
 controllerLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(controller_LTLIBRARIES)
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
 am__eina_fixed_bitmap_la_SOURCES_DIST = eina_fixed_bitmap.c
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@am_eina_fixed_bitmap_la_OBJECTS = eina_fixed_bitmap_la-eina_fixed_bitmap.lo
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at am_eina_fixed_bitmap_la_OBJECTS = eina_fixed_bitmap_la-eina_fixed_bitmap.lo
 eina_fixed_bitmap_la_OBJECTS = $(am_eina_fixed_bitmap_la_OBJECTS)
 eina_fixed_bitmap_la_LINK = $(LIBTOOL) --tag=CC \
 	$(eina_fixed_bitmap_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(eina_fixed_bitmap_la_LDFLAGS) $(LDFLAGS) -o $@
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@am_eina_fixed_bitmap_la_rpath =  \
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@	-rpath $(controllerdir)
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at am_eina_fixed_bitmap_la_rpath = -rpath \
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -122,6 +122,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -234,16 +235,17 @@ AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@
 
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@controllerdir = $(libdir)/eina/mp
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@controller_LTLIBRARIES = eina_fixed_bitmap.la
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap_la_SOURCES = \
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap.c
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at controllerdir = $(libdir)/eina/mp
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at controller_LTLIBRARIES = eina_fixed_bitmap.la
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap_la_SOURCES = \
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap.c
 
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
- at EINA_STATIC_BUILD_FIXED_BITMAP_FALSE@eina_fixed_bitmap_la_LIBTOOLFLAGS = --tag=disable-static
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_FIXED_BITMAP_TRUE@@EINA_STATIC_BUILD_FIXED_BITMAP_FALSE at eina_fixed_bitmap_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
 .SUFFIXES:
diff --git a/src/modules/mp/pass_through/Makefile.am b/src/modules/mp/pass_through/Makefile.am
index b811754..b630492 100644
--- a/src/modules/mp/pass_through/Makefile.am
+++ b/src/modules/mp/pass_through/Makefile.am
@@ -1,25 +1,27 @@
-MAINTAINERCLEANFILES = \
-Makefile.in
+MAINTAINERCLEANFILES = Makefile.in
 
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@
 
+if EINA_BUILD_PASS_THROUGH
 if !EINA_STATIC_BUILD_PASS_THROUGH
 
 controllerdir = $(libdir)/eina/mp
-controller_LTLIBRARIES = pass_through.la
+controller_LTLIBRARIES = eina_pass_through.la
 
-pass_through_la_SOURCES = \
-pass_through.c
+eina_pass_through_la_SOURCES = \
+eina_pass_through.c
 
-pass_through_la_LIBADD       = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
-pass_through_la_LDFLAGS      = -no-undefined @lt_enable_auto_import@ -module -avoid-version
-pass_through_la_LIBTOOLFLAGS = --tag=disable-static
+eina_pass_through_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
+eina_pass_through_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+eina_pass_through_la_LIBTOOLFLAGS = --tag=disable-static
 
 endif
+endif
 
 clean-local:
 	rm -rf *.gcno
diff --git a/src/modules/mp/pass_through/Makefile.in b/src/modules/mp/pass_through/Makefile.in
index 2941ad0..dbc5cba 100644
--- a/src/modules/mp/pass_through/Makefile.in
+++ b/src/modules/mp/pass_through/Makefile.in
@@ -40,10 +40,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -58,16 +58,16 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(controllerdir)"
 controllerLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(controller_LTLIBRARIES)
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
-am__pass_through_la_SOURCES_DIST = pass_through.c
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@am_pass_through_la_OBJECTS = pass_through_la-pass_through.lo
-pass_through_la_OBJECTS = $(am_pass_through_la_OBJECTS)
-pass_through_la_LINK = $(LIBTOOL) --tag=CC \
-	$(pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(AM_CFLAGS) $(CFLAGS) $(pass_through_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@am_pass_through_la_rpath =  \
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@	-rpath $(controllerdir)
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through_la_DEPENDENCIES = $(top_builddir)/src/lib/libeina.la
+am__eina_pass_through_la_SOURCES_DIST = eina_pass_through.c
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at am_eina_pass_through_la_OBJECTS = eina_pass_through_la-eina_pass_through.lo
+eina_pass_through_la_OBJECTS = $(am_eina_pass_through_la_OBJECTS)
+eina_pass_through_la_LINK = $(LIBTOOL) --tag=CC \
+	$(eina_pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(eina_pass_through_la_LDFLAGS) $(LDFLAGS) -o $@
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at am_eina_pass_through_la_rpath = -rpath \
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE@	$(controllerdir)
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -80,8 +80,8 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-SOURCES = $(pass_through_la_SOURCES)
-DIST_SOURCES = $(am__pass_through_la_SOURCES_DIST)
+SOURCES = $(eina_pass_through_la_SOURCES)
+DIST_SOURCES = $(am__eina_pass_through_la_SOURCES_DIST)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -122,6 +122,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -229,23 +230,22 @@ target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 version_info = @version_info@
-MAINTAINERCLEANFILES = \
-Makefile.in
-
+MAINTAINERCLEANFILES = Makefile.in
 AM_CPPFLAGS = \
 -I. \
 -I$(top_srcdir)/src/include \
 -I$(top_builddir)/src/include \
+ at EINA_CPPFLAGS@ \
 @EINA_CFLAGS@
 
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@controllerdir = $(libdir)/eina/mp
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@controller_LTLIBRARIES = pass_through.la
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through_la_SOURCES = \
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through.c
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at controllerdir = $(libdir)/eina/mp
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at controller_LTLIBRARIES = eina_pass_through.la
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through_la_SOURCES = \
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through.c
 
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
- at EINA_STATIC_BUILD_PASS_THROUGH_FALSE@pass_through_la_LIBTOOLFLAGS = --tag=disable-static
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through_la_LIBADD = $(top_builddir)/src/lib/libeina.la @EINA_LIBS@
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
+ at EINA_BUILD_PASS_THROUGH_TRUE@@EINA_STATIC_BUILD_PASS_THROUGH_FALSE at eina_pass_through_la_LIBTOOLFLAGS = --tag=disable-static
 all: all-am
 
 .SUFFIXES:
@@ -306,8 +306,8 @@ clean-controllerLTLIBRARIES:
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
-pass_through.la: $(pass_through_la_OBJECTS) $(pass_through_la_DEPENDENCIES) 
-	$(pass_through_la_LINK) $(am_pass_through_la_rpath) $(pass_through_la_OBJECTS) $(pass_through_la_LIBADD) $(LIBS)
+eina_pass_through.la: $(eina_pass_through_la_OBJECTS) $(eina_pass_through_la_DEPENDENCIES) 
+	$(eina_pass_through_la_LINK) $(am_eina_pass_through_la_rpath) $(eina_pass_through_la_OBJECTS) $(eina_pass_through_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -315,7 +315,7 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pass_through_la-pass_through.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_pass_through_la-eina_pass_through.Plo at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -338,12 +338,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
-pass_through_la-pass_through.lo: pass_through.c
- at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT pass_through_la-pass_through.lo -MD -MP -MF $(DEPDIR)/pass_through_la-pass_through.Tpo -c -o pass_through_la-pass_through.lo `test -f 'pass_through.c' || echo '$(srcdir)/'`pass_through.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/pass_through_la-pass_through.Tpo $(DEPDIR)/pass_through_la-pass_through.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pass_through.c' object='pass_through_la-pass_through.lo' libtool=yes @AMDEPBACKSLASH@
+eina_pass_through_la-eina_pass_through.lo: eina_pass_through.c
+ at am__fastdepCC_TRUE@	$(LIBTOOL) --tag=CC $(eina_pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT eina_pass_through_la-eina_pass_through.lo -MD -MP -MF $(DEPDIR)/eina_pass_through_la-eina_pass_through.Tpo -c -o eina_pass_through_la-eina_pass_through.lo `test -f 'eina_pass_through.c' || echo '$(srcdir)/'`eina_pass_through.c
+ at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/eina_pass_through_la-eina_pass_through.Tpo $(DEPDIR)/eina_pass_through_la-eina_pass_through.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eina_pass_through.c' object='eina_pass_through_la-eina_pass_through.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o pass_through_la-pass_through.lo `test -f 'pass_through.c' || echo '$(srcdir)/'`pass_through.c
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC $(eina_pass_through_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o eina_pass_through_la-eina_pass_through.lo `test -f 'eina_pass_through.c' || echo '$(srcdir)/'`eina_pass_through.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/src/modules/mp/pass_through/pass_through.c b/src/modules/mp/pass_through/eina_pass_through.c
similarity index 100%
rename from src/modules/mp/pass_through/pass_through.c
rename to src/modules/mp/pass_through/eina_pass_through.c
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index fc7a56e..9a23c7c 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -92,7 +92,8 @@ eina_bench_stringshare.c \
 eina_bench_convert.c	\
 eina_bench_mempool.c	\
 eina_bench_stringshare_e17.c \
-eina_bench_array.c
+eina_bench_array.c	\
+eina_bench_rectangle_pool.c
 
 eina_bench_LDADD = @ECORE_LIBS@ @EVAS_LIBS@ @GLIB_LIBS@ $(top_builddir)/src/lib/libeina.la
 
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
index 6111b17..cf1bbd5 100644
--- a/src/tests/Makefile.in
+++ b/src/tests/Makefile.in
@@ -47,10 +47,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
 	$(top_srcdir)/m4/efl_coverage.m4 $(top_srcdir)/m4/efl_cpu.m4 \
 	$(top_srcdir)/m4/efl_doxygen.m4 \
 	$(top_srcdir)/m4/efl_pthread.m4 $(top_srcdir)/m4/efl_tests.m4 \
-	$(top_srcdir)/m4/eina_check.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/eina_bench.m4 $(top_srcdir)/m4/eina_check.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -82,7 +82,8 @@ PROGRAMS = $(bench_PROGRAMS)
 am__eina_bench_SOURCES_DIST = eina_bench.c eina_bench_sort.c \
 	eina_bench_hash.c eina_bench_stringshare.c \
 	eina_bench_convert.c eina_bench_mempool.c \
-	eina_bench_stringshare_e17.c eina_bench_array.c
+	eina_bench_stringshare_e17.c eina_bench_array.c \
+	eina_bench_rectangle_pool.c
 @EFL_ENABLE_BENCHMARK_TRUE at am_eina_bench_OBJECTS =  \
 @EFL_ENABLE_BENCHMARK_TRUE@	eina_bench.$(OBJEXT) \
 @EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_sort.$(OBJEXT) \
@@ -91,7 +92,8 @@ am__eina_bench_SOURCES_DIST = eina_bench.c eina_bench_sort.c \
 @EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_convert.$(OBJEXT) \
 @EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_mempool.$(OBJEXT) \
 @EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_stringshare_e17.$(OBJEXT) \
- at EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_array.$(OBJEXT)
+ at EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_array.$(OBJEXT) \
+ at EFL_ENABLE_BENCHMARK_TRUE@	eina_bench_rectangle_pool.$(OBJEXT)
 eina_bench_OBJECTS = $(am_eina_bench_OBJECTS)
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_DEPENDENCIES =  \
 @EFL_ENABLE_BENCHMARK_TRUE@	$(top_builddir)/src/lib/libeina.la
@@ -181,6 +183,7 @@ EINA_CFLAGS = @EINA_CFLAGS@
 EINA_CONFIGURE_DEFAULT_MEMPOOL = @EINA_CONFIGURE_DEFAULT_MEMPOOL@
 EINA_CONFIGURE_MAGIC_DEBUG = @EINA_CONFIGURE_MAGIC_DEBUG@
 EINA_CONFIGURE_SAFETY_CHECKS = @EINA_CONFIGURE_SAFETY_CHECKS@
+EINA_CPPFLAGS = @EINA_CPPFLAGS@
 EINA_LIBS = @EINA_LIBS@
 EMEMOA_CFLAGS = @EMEMOA_CFLAGS@
 EMEMOA_LIBS = @EMEMOA_LIBS@
@@ -337,7 +340,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/include \
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_convert.c	\
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_mempool.c	\
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_stringshare_e17.c \
- at EFL_ENABLE_BENCHMARK_TRUE@eina_bench_array.c
+ at EFL_ENABLE_BENCHMARK_TRUE@eina_bench_array.c	\
+ at EFL_ENABLE_BENCHMARK_TRUE@eina_bench_rectangle_pool.c
 
 @EFL_ENABLE_BENCHMARK_TRUE at eina_bench_LDADD = @ECORE_LIBS@ @EVAS_LIBS@ @GLIB_LIBS@ $(top_builddir)/src/lib/libeina.la
 EXTRA_DIST = eina_bench.h eina_suite.h
@@ -456,6 +460,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_convert.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_hash.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_mempool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_rectangle_pool.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_sort.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_stringshare.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eina_bench_stringshare_e17.Po at am__quote@
diff --git a/src/tests/eina_bench.c b/src/tests/eina_bench.c
index a25f39f..1f5abfc 100644
--- a/src/tests/eina_bench.c
+++ b/src/tests/eina_bench.c
@@ -41,6 +41,7 @@ static const Eina_Benchmark_Case etc[] = {
   { "Convert", eina_bench_convert },
   { "Sort", eina_bench_sort },
   { "Mempool", eina_bench_mempool },
+  { "Rectangle_Pool", eina_bench_rectangle_pool },
   { NULL, NULL }
 };
 
@@ -58,7 +59,7 @@ static void _mempool_init(void)
 
 static void _mempool_shutdown(void)
 {
-   eina_module_list_delete(_modules);
+   eina_module_list_flush(_modules);
    /* TODO delete the list */
    eina_mempool_shutdown();
 }
diff --git a/src/tests/eina_bench.h b/src/tests/eina_bench.h
index f4b7a3a..f79a6e0 100644
--- a/src/tests/eina_bench.h
+++ b/src/tests/eina_bench.h
@@ -27,6 +27,7 @@ void eina_bench_stringshare(Eina_Benchmark *bench);
 void eina_bench_convert(Eina_Benchmark *bench);
 void eina_bench_sort(Eina_Benchmark *bench);
 void eina_bench_mempool(Eina_Benchmark *bench);
+void eina_bench_rectangle_pool(Eina_Benchmark *bench);
 
 /* Specific benchmark. */
 void eina_bench_e17(void);
diff --git a/src/tests/eina_bench_array.c b/src/tests/eina_bench_array.c
index 40c8ef7..e521c7a 100644
--- a/src/tests/eina_bench_array.c
+++ b/src/tests/eina_bench_array.c
@@ -561,6 +561,7 @@ eina_bench_gptrarray_4evas_render(int request)
 #endif
 
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
 static void
 eina_bench_evas_list_4evas_render(int request)
 {
@@ -630,6 +631,7 @@ eina_bench_evas_list_4evas_render(int request)
    evas_shutdown();
 }
 #endif
+#endif
 
 #ifdef EINA_BENCH_HAVE_ECORE
 #if 0
@@ -710,8 +712,10 @@ void eina_bench_array(Eina_Benchmark *bench)
    eina_benchmark_register(bench, "gptrarray", EINA_BENCHMARK(eina_bench_gptrarray_4evas_render), 200, 4000, 100);
 #endif
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
    eina_benchmark_register(bench, "evas", EINA_BENCHMARK(eina_bench_evas_list_4evas_render), 200, 4000, 100);
 #endif
+#endif
 #ifdef EINA_BENCH_HAVE_ECORE
 #if 0
    eina_benchmark_register(bench, "ecore", EINA_BENCHMARK(eina_bench_ecore_list_4evas_render), 200, 4000, 100);
diff --git a/src/tests/eina_bench_hash.c b/src/tests/eina_bench_hash.c
index 6b4a3d8..6352e18 100644
--- a/src/tests/eina_bench_hash.c
+++ b/src/tests/eina_bench_hash.c
@@ -281,6 +281,7 @@ eina_bench_lookup_ghash(int request)
 #endif
 
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
 static void
 eina_bench_lookup_evas(int request)
 {
@@ -329,6 +330,7 @@ eina_bench_lookup_evas(int request)
    eina_array_free(array);
 }
 #endif
+#endif
 
 #ifdef EINA_BENCH_HAVE_ECORE
 typedef struct _Eina_Bench_Ecore Eina_Bench_Ecore;
@@ -389,8 +391,10 @@ void eina_bench_hash(Eina_Benchmark *bench)
    eina_benchmark_register(bench, "ghash-lookup", EINA_BENCHMARK(eina_bench_lookup_ghash), 10, 3000, 10);
 #endif
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
    eina_benchmark_register(bench, "evas-lookup", EINA_BENCHMARK(eina_bench_lookup_evas), 10, 3000, 10);
 #endif
+#endif
 #ifdef EINA_BENCH_HAVE_ECORE
    eina_benchmark_register(bench, "ecore-lookup", EINA_BENCHMARK(eina_bench_lookup_ecore), 10, 3000, 10);
 #endif
diff --git a/src/tests/eina_bench_mempool.c b/src/tests/eina_bench_mempool.c
index 17ba444..d89e2cb 100644
--- a/src/tests/eina_bench_mempool.c
+++ b/src/tests/eina_bench_mempool.c
@@ -42,7 +42,7 @@ _eina_mempool_bench(Eina_Mempool *mp, int request)
      {
 	for (j = 0; j < request; ++j)
 	  {
-	     eina_array_push(array, eina_mempool_alloc(mp, sizeof (int)));
+	     eina_array_push(array, eina_mempool_malloc(mp, sizeof (int)));
 	  }
 
 	for (j = 0; j < request; ++j)
@@ -60,9 +60,9 @@ eina_mempool_chained_mempool(int request)
 {
    Eina_Mempool *mp;
 
-   mp = eina_mempool_new("chained_mempool", "test", NULL, sizeof (int), 256);
+   mp = eina_mempool_add("chained_mempool", "test", NULL, sizeof (int), 256);
    _eina_mempool_bench(mp, request);
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 
 static void
@@ -70,9 +70,9 @@ eina_mempool_pass_through(int request)
 {
    Eina_Mempool *mp;
 
-   mp = eina_mempool_new("pass_through", "test", NULL, sizeof (int), 8, 0);
+   mp = eina_mempool_add("pass_through", "test", NULL, sizeof (int), 8, 0);
    _eina_mempool_bench(mp, request);
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 
 static void
@@ -80,9 +80,9 @@ eina_mempool_fixed_bitmap(int request)
 {
    Eina_Mempool *mp;
 
-   mp = eina_mempool_new("fixed_bitmap", "test", NULL, sizeof (int));
+   mp = eina_mempool_add("fixed_bitmap", "test", NULL, sizeof (int));
    _eina_mempool_bench(mp, request);
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 
 #ifdef EINA_EMEMOA_SUPPORT
@@ -91,9 +91,9 @@ eina_mempool_ememoa_fixed(int request)
 {
    Eina_Mempool *mp;
 
-   mp = eina_mempool_new("ememoa_fixed", "test", NULL, sizeof (int), 8, 0);
+   mp = eina_mempool_add("ememoa_fixed", "test", NULL, sizeof (int), 8, 0);
    _eina_mempool_bench(mp, request);
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 
 static void
@@ -101,9 +101,9 @@ eina_mempool_ememoa_unknown(int request)
 {
    Eina_Mempool *mp;
 
-   mp = eina_mempool_new("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8);
+   mp = eina_mempool_add("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8);
    _eina_mempool_bench(mp, request);
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 #endif
 
diff --git a/src/tests/eina_bench_rectangle_pool.c b/src/tests/eina_bench_rectangle_pool.c
new file mode 100644
index 0000000..6d61517
--- /dev/null
+++ b/src/tests/eina_bench_rectangle_pool.c
@@ -0,0 +1,75 @@
+/* EINA - EFL data type library
+ * Copyright (C) 2008 Cedric Bail
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "eina_bench.h"
+#include "eina_rectangle.h"
+#include "eina_list.h"
+
+static void
+eina_bench_eina_rectangle_pool(int request)
+{
+   Eina_Rectangle_Pool *pool;
+   Eina_Rectangle *rect;
+   Eina_List *list = NULL;
+   int i;
+
+   eina_list_init();
+   eina_rectangle_init();
+
+   pool = eina_rectangle_pool_new(2048, 2048);
+   if (!pool) return ;
+
+
+   for (i = 0; i < request; ++i)
+     {
+	rect = NULL;
+
+	while (!rect)
+	  {
+	     rect = eina_rectangle_pool_request(pool, i & 0xFF, 256 - (i & 0xFF));
+	     if (!rect)
+	       {
+		  rect = eina_list_data_get(list);
+		  list = eina_list_remove_list(list, list);
+		  if (rect) eina_rectangle_pool_release(rect);
+	       }
+	     else
+	       {
+		  list = eina_list_append(list, rect);
+	       }
+	     if (!(i & 0xFF)) break;
+	  }
+     }
+
+   eina_rectangle_pool_free(pool);
+   eina_list_free(list);
+
+   eina_rectangle_shutdown();
+   eina_list_shutdown();
+}
+
+void eina_bench_rectangle_pool(Eina_Benchmark *bench)
+{
+   eina_benchmark_register(bench, "eina", EINA_BENCHMARK(eina_bench_eina_rectangle_pool), 10, 4000, 100);
+}
+
+
diff --git a/src/tests/eina_bench_sort.c b/src/tests/eina_bench_sort.c
index eae2675..6d4a113 100644
--- a/src/tests/eina_bench_sort.c
+++ b/src/tests/eina_bench_sort.c
@@ -77,6 +77,7 @@ eina_bench_sort_eina(int request)
 }
 
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
 static void
 eina_bench_sort_evas(int request)
 {
@@ -107,6 +108,7 @@ eina_bench_sort_evas(int request)
    evas_shutdown();
 }
 #endif
+#endif
 
 #ifdef EINA_BENCH_HAVE_GLIB
 static void
@@ -228,8 +230,10 @@ void eina_bench_sort(Eina_Benchmark *bench)
    eina_benchmark_register(bench, "ecore-heap", EINA_BENCHMARK(eina_bench_sort_ecore_heap), 10, 10000, 100);
 #endif
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
    eina_benchmark_register(bench, "evas", EINA_BENCHMARK(eina_bench_sort_evas), 10, 10000, 100);
 #endif
+#endif
 }
 
 
diff --git a/src/tests/eina_bench_stringshare.c b/src/tests/eina_bench_stringshare.c
index 35a14e3..afdd501 100644
--- a/src/tests/eina_bench_stringshare.c
+++ b/src/tests/eina_bench_stringshare.c
@@ -105,6 +105,7 @@ eina_bench_stringchunk_job(int request)
 #endif
 
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
 static void
 eina_bench_evas_job(int request)
 {
@@ -138,6 +139,7 @@ eina_bench_evas_job(int request)
    evas_shutdown();
 }
 #endif
+#endif
 
 #ifdef EINA_BENCH_HAVE_ECORE
 static void
@@ -179,8 +181,10 @@ void eina_bench_stringshare(Eina_Benchmark *bench)
    eina_benchmark_register(bench, "stringchunk (glib)", EINA_BENCHMARK(eina_bench_stringchunk_job), 100, 20100, 500);
 #endif
 #ifdef EINA_BENCH_HAVE_EVAS
+#if 0
    eina_benchmark_register(bench, "stringshare (evas)", EINA_BENCHMARK(eina_bench_evas_job), 100, 20100, 500);
 #endif
+#endif
 #ifdef EINA_BENCH_HAVE_ECORE
    eina_benchmark_register(bench, "stringshare (ecore)", EINA_BENCHMARK(eina_bench_ecore_job), 100, 20100, 500);
 #endif
diff --git a/src/tests/eina_bench_stringshare_e17.c b/src/tests/eina_bench_stringshare_e17.c
index f9b357f..06bfec0 100644
--- a/src/tests/eina_bench_stringshare_e17.c
+++ b/src/tests/eina_bench_stringshare_e17.c
@@ -97,7 +97,7 @@ eina_bench_e17_stringshare(Eina_Stringshare_Test *str)
 {
    Eina_Counter *cnt;
 
-   cnt = eina_counter_add(str->name);
+   cnt = eina_counter_new(str->name);
 
    eina_counter_start(cnt);
 
@@ -112,7 +112,7 @@ eina_bench_e17_stringshare(Eina_Stringshare_Test *str)
    fprintf(stderr, "For `%s`:\n", str->name);
    eina_counter_dump(cnt);
 
-   eina_counter_delete(cnt);
+   eina_counter_free(cnt);
 }
 #endif
 
diff --git a/src/tests/eina_suite.c b/src/tests/eina_suite.c
index 62905ce..782c7fb 100644
--- a/src/tests/eina_suite.c
+++ b/src/tests/eina_suite.c
@@ -88,7 +88,7 @@ static void _mempool_init(void)
 
 static void _mempool_shutdown(void)
 {
-   eina_module_list_delete(_modules);
+   eina_module_list_flush(_modules);
    /* TODO delete the list */
    eina_mempool_shutdown();
 }
diff --git a/src/tests/eina_test_counter.c b/src/tests/eina_test_counter.c
index 22789cc..b5aef0c 100644
--- a/src/tests/eina_test_counter.c
+++ b/src/tests/eina_test_counter.c
@@ -47,7 +47,7 @@ START_TEST(eina_counter_simple)
 
    eina_counter_init();
 
-   cnt = eina_counter_add("eina_test");
+   cnt = eina_counter_new("eina_test");
    fail_if(!cnt);
 
    eina_counter_start(cnt);
@@ -71,7 +71,7 @@ START_TEST(eina_counter_simple)
 
    free(dump);
 
-   eina_counter_delete(cnt);
+   eina_counter_free(cnt);
 
    eina_counter_shutdown();
 }
@@ -84,12 +84,12 @@ START_TEST(eina_counter_break)
 
    eina_counter_init();
 
-   cnt = eina_counter_add("eina_test");
+   cnt = eina_counter_new("eina_test");
    fail_if(!cnt);
 
    eina_counter_stop(cnt, 10);
 
-   eina_counter_delete(cnt);
+   eina_counter_free(cnt);
 
    dump = eina_counter_dump(NULL);
    fail_if(dump);
diff --git a/src/tests/eina_test_lalloc.c b/src/tests/eina_test_lalloc.c
index 0b6ba6a..9248fe0 100644
--- a/src/tests/eina_test_lalloc.c
+++ b/src/tests/eina_test_lalloc.c
@@ -74,7 +74,7 @@ START_TEST(eina_lalloc_simple)
 
    fail_if(eina_lalloc_elements_add(test, 50) != EINA_FALSE);
 
-   eina_lalloc_delete(test);
+   eina_lalloc_free(test);
 }
 END_TEST
 
diff --git a/src/tests/eina_test_mempool.c b/src/tests/eina_test_mempool.c
index 43b86ac..09ab5d1 100644
--- a/src/tests/eina_test_mempool.c
+++ b/src/tests/eina_test_mempool.c
@@ -37,7 +37,7 @@ _mempool_init(void)
 static void
 _mempool_shutdown(void)
 {
-   eina_module_list_delete(_modules);
+   eina_module_list_flush(_modules);
    /* TODO delete the list */
    eina_mempool_shutdown();
 }
@@ -52,7 +52,7 @@ _eina_mempool_test(Eina_Mempool *mp, Eina_Bool with_realloc, Eina_Bool with_gc)
 
    for (i = 0; i < 512; ++i)
      {
-	tbl[i] = eina_mempool_alloc(mp, sizeof (int));
+	tbl[i] = eina_mempool_malloc(mp, sizeof (int));
 	fail_if(!tbl[i]);
 	*tbl[i] = i;
      }
@@ -74,7 +74,7 @@ _eina_mempool_test(Eina_Mempool *mp, Eina_Bool with_realloc, Eina_Bool with_gc)
 	eina_mempool_statistics(mp);
      }
 
-   eina_mempool_delete(mp);
+   eina_mempool_del(mp);
 }
 
 START_TEST(eina_mempool_init_shutdown)
@@ -83,7 +83,7 @@ START_TEST(eina_mempool_init_shutdown)
 
    _mempool_init();
 
-   mp = eina_mempool_new("test", "test", NULL);
+   mp = eina_mempool_add("test", "test", NULL);
    fail_if(mp != NULL);
 
    _mempool_shutdown();
@@ -96,7 +96,7 @@ START_TEST(eina_mempool_chained_mempool)
 
    _mempool_init();
 
-   mp = eina_mempool_new("chained_mempool", "test", NULL, sizeof (int), 256);
+   mp = eina_mempool_add("chained_mempool", "test", NULL, sizeof (int), 256);
    _eina_mempool_test(mp, EINA_FALSE, EINA_FALSE);
 
    _mempool_shutdown();
@@ -109,7 +109,7 @@ START_TEST(eina_mempool_pass_through)
 
    _mempool_init();
 
-   mp = eina_mempool_new("pass_through", "test", NULL, sizeof (int), 8, 0);
+   mp = eina_mempool_add("pass_through", "test", NULL, sizeof (int), 8, 0);
    _eina_mempool_test(mp, EINA_TRUE, EINA_FALSE);
 
    _mempool_shutdown();
@@ -122,7 +122,7 @@ START_TEST(eina_mempool_fixed_bitmap)
 
    _mempool_init();
 
-   mp = eina_mempool_new("fixed_bitmap", "test", NULL, sizeof (int));
+   mp = eina_mempool_add("fixed_bitmap", "test", NULL, sizeof (int));
    _eina_mempool_test(mp, EINA_FALSE, EINA_FALSE);
 
    _mempool_shutdown();
@@ -136,7 +136,7 @@ START_TEST(eina_mempool_ememoa_fixed)
 
    _mempool_init();
 
-   mp = eina_mempool_new("ememoa_fixed", "test", NULL, sizeof (int), 8, 0);
+   mp = eina_mempool_add("ememoa_fixed", "test", NULL, sizeof (int), 8, 0);
    _eina_mempool_test(mp, EINA_FALSE, EINA_TRUE);
 
    _mempool_shutdown();
@@ -149,7 +149,7 @@ START_TEST(eina_mempool_ememoa_unknown)
 
    _mempool_init();
 
-   mp = eina_mempool_new("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8);
+   mp = eina_mempool_add("ememoa_unknown", "test", NULL, 0, 2, sizeof (int), 8, sizeof (int) * 2, 8);
    _eina_mempool_test(mp, EINA_TRUE, EINA_TRUE);
 
    _mempool_shutdown();
diff --git a/src/tests/eina_test_module.c b/src/tests/eina_test_module.c
index ba972bb..86a7b46 100644
--- a/src/tests/eina_test_module.c
+++ b/src/tests/eina_test_module.c
@@ -70,7 +70,7 @@ START_TEST(eina_module_load_unload)
    fail_if(!_modules);
    eina_module_list_load(_modules);
    eina_module_list_unload(_modules);
-   eina_module_list_delete(_modules);
+   eina_module_list_flush(_modules);
    /* TODO delete the list */
    eina_module_shutdown();
 }
diff --git a/src/tests/eina_test_rectangle.c b/src/tests/eina_test_rectangle.c
index 7a85813..e50950d 100644
--- a/src/tests/eina_test_rectangle.c
+++ b/src/tests/eina_test_rectangle.c
@@ -34,9 +34,9 @@ START_TEST(eina_rectangle_pool)
    int w;
    int h;
 
-   eina_rectangle_init();
+   fail_if(!eina_rectangle_init());
 
-   pool = eina_rectangle_pool_add(256, 256);
+   pool = eina_rectangle_pool_new(256, 256);
    fail_if(pool == NULL);
 
    eina_rectangle_pool_data_set(pool, rects);
@@ -66,7 +66,7 @@ START_TEST(eina_rectangle_pool)
 
    fail_if(eina_rectangle_pool_request(pool, 16, 16) == NULL);
 
-   eina_rectangle_pool_delete(pool);
+   eina_rectangle_pool_free(pool);
 
    eina_rectangle_shutdown();
 }

-- 
 Enlightenment Foundation Library providing optimized data types



More information about the Pkg-e-commits mailing list